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指针指向的数组中。使用此功能将需要分配适当大小的堆栈并将其分配给堆栈指针。