gpt4 book ai didi

c - 为什么C : Array Implementation for Stack and Linked List Implementation for Stack?中的这两个代码之间会出现差异

转载 作者:行者123 更新时间:2023-11-30 21:36:39 27 4
gpt4 key购买 nike

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

关于c - 为什么C : Array Implementation for Stack and Linked List Implementation for Stack?中的这两个代码之间会出现差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47074172/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com