【发布时间】:2017-11-02 11:27:13
【问题描述】:
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值....
非常感谢。
【问题讨论】:
-
对于列表,每个节点代表一个单个值,对吧?因此,节点只包含一个
Element值是有道理的。对于堆栈,stack是指向数组第一个元素的指针。 -
缺少一些信息,显示更多代码。
-
因为它们的实现方式不同?第一个将动态分配元素并将它们挂钩到堆栈顶部,第二个动态分配节点。
-
@Someprogrammerdude 谢谢。数组呢?它不需要包含任何值吗?
-
@MichaelWalz 谢谢。我添加了更多关于创建堆栈的信息。我可以向您展示整个问题,但 stackexchange 阻止了太多代码问题..
标签: c arrays struct linked-list stack