gpt4 book ai didi

c - C语言中的链表

转载 作者:行者123 更新时间:2023-11-30 21:03:34 25 4
gpt4 key购买 nike

我正在尝试一个示例链接列表程序。下面的代码有什么问题?当我尝试访问这些值时......出现段错误。我无法访问根目录之外的值。以下内容有什么问题?

#include<stdio.h>
#include<stdlib.h>

struct node{
int val;
struct node* next;
};

void create(int n,struct node** ref){
struct node *temp,*newnode;
newnode=(struct node*)calloc(1,sizeof(struct node));
newnode->val=n;
newnode->next=NULL;
if(*ref==NULL){
*ref=newnode;
temp=newnode;
}
else{
temp->next=newnode;
temp=newnode;
}
return;
}

int main(){
struct node *root=NULL,*p;
int n,i,j=1;
while(j==1){
printf("enter the value...\n");
scanf("%d",&n);
create(n,&root);
//printf("%d",root->val);
printf("Press 1 to continue..\n");
scanf("%d",&j);
}
p=root;
while(p!=NULL){
printf("%d-",p->val);
p=p->next;
}
printf("\n");
return 0;
}

最佳答案

我认为您只需将 temp 声明为静态即可。至少这对我有用:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

struct node{
int val;
struct node* next;
};

void create(int n,struct node** ref){
static struct node *temp;
struct node *newnode;

newnode=(struct node*)calloc(1,sizeof(struct node));
newnode->val=n;
newnode->next=NULL;
if(*ref==NULL){
*ref=newnode;
temp=newnode;
}
else{
temp->next=newnode;
temp=newnode;
}

return;
}

输出:

enter the value...
1
Press 1 to continue..
1
enter the value...
2
Press 1 to continue..
1
enter the value...
3
Press 1 to continue..
0
1-2-3-

关于c - C语言中的链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24057354/

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