gpt4 book ai didi

c - 栈的链表实现

转载 作者:太空宇宙 更新时间:2023-11-04 05:52:32 25 4
gpt4 key购买 nike

#include "stdio.h"
#include "stdlib.h"

struct node_type {
int data;
struct node_type *next;
};

struct stack_type{
node_type *top;
int length;
};

void push(node_type *head,stack_type stack);

int main()
{
struct stack_type stack;
node_type *list;
list = (node_type *)malloc(sizeof(node_type));
list->next = NULL;
node_type *head;
head = list;
stack.length = 0; //set stack empty
push(head, stack);
list = head->next;
printf("The entegers are:");
do {
printf("%d", stack.top->data);
list = list->next;
stack.top = list;
} while (list->next != 0);
system("pause");
return 0;
}

void push(node_type *head,stack_type stack)
{
int i, n;
node_type *p;
p = (node_type*)malloc(sizeof(node_type));
p = head;
printf("Enter the integers(0 to end):");
for (;;) {
scanf("%d", &n);
if (n == 0)
break;
stack.top->data = n;
p->next = stack.top;
stack.length++;
}
}

我debug的时候说p->next=NULL然后stop,这个我不清楚。

为什么我错了?如何修复它,我不清楚 NULL 和 top finger 的使用提前感谢您的回答。

最佳答案

两个问题:首先,在 main 函数中,您没有初始化 stack.top,这意味着它将有一个 不确定 值,取消引用它像您在 push 函数中所做的那样看似随机的指针将导致未定义的行为

第二个问题是你将stack结构传递给push按值,这意味着它被复制并且所有的改变都在push 函数仅在结构的本地副本上完成。您需要使用指针和地址运算符 & 来模拟按值 传递。

关于c - 栈的链表实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36352335/

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