typedef int Element;

typedef struct {
    Element *stack;
    int max_size;
    int top;
} Stack;

//I added more codes..
Stack *CreateStack(int size)
{
    Stack *pStack = (Stack *)malloc(sizeof(Stack));
    if(pStack == NULL)
        return NULL;

    pStack->stack = (Element *)malloc(size * sizeof(Element));
    if(pStack->stack == NULL){
        free(pStack);
        return NULL;
    }

    pStack->max_size = size;
    pStack->top = -1;

    return pStack;

}


//this for linked list
typedef struct tStackNode{
    Element data;
    struct tStackNode *next;
} StackNode;

typedef struct {
    int count;
    StackNode *top;
} StackHead;

StackHead* CreateStack(int size)
//size is not used in linked list implmentation
{
    StackHead *pStack = (StackHead *) malloc(sizeof(StackHead));
    if(pStack == NULL)
        return NULL;
    pStack->count = 0;
    pStack->top = NULL;

    return pStack;
}


第一个用于数组,第二个用于链接列表。

我为“创建堆栈”添加了更多代码。

为什么第一个使用整数指针值而第二个需要int值...

非常感谢。

最佳答案

在链接列表中,数据元素存储在每个列表节点中。

使用数组实现时,数据存储在* stack指针指向的数组中。使用此功能将需要分配适当大小的堆栈并将其分配给堆栈指针。

10-08 20:01