gpt4 book ai didi

c - 链表段错误

转载 作者:太空宇宙 更新时间:2023-11-04 08:10:03 24 4
gpt4 key购买 nike

我正在练习编写一个链表,该链表将按升序接收用户的数字并告诉您您使用的唯一数字是什么。在它进入我的 findUnique 函数和我的 while 循环后,我一直遇到段错误,我已经设置为在它进入之前打印出列表,但它不打印任何东西。这只是链表的练习,因此我们将不胜感激。

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

typedef struct number{

int num;
struct number* next;
}Number;

Number *addterm(Number*, int);
void findUnique(Number*);

int main(void){

Number *Number_List = NULL;
int digit = 1;

printf("Enter numbers in ascending order(enter 0 to stop): ");
scanf("%d", &digit);

while(digit != 0){
addterm(Number_List, digit);
printf("Enter numbers in ascending order(enter 0 to stop): ");
scanf("%d", &digit);
}
printf("\ntest 1\n");

Number *ptr = Number_List;
while(ptr){
printf("%d ", ptr -> num);
Number_List = ptr -> next;
}
printf("\ntest 2\n");
printf("\n");

findUnique(Number_List);


return 0;
}

Number *addterm(Number* list, int userIn){
Number *newNum = (Number *) malloc ( sizeof (Number) );
newNum->num = userIn;
newNum->next = list;

if(list == NULL){
return newNum;
}
Number *ptr = list;

while( ptr->next != NULL ){
ptr = ptr->next;
}
ptr->next = newNum;
return list;
}
void findUnique(Number* list){

int print, temp;
print = list->num;
temp = print;
printf("The unique numbers you entered are %d", temp);

while( list ){
print = list->num;
if(print == temp){
continue;
}
else{
temp = print;
printf(" %d", temp);
}
list = list -> next;
}
return;
}

最佳答案

错误 1:

addterm(Number_List, digit);

应该是

Number_List = addterm(Number_List, digit);

您忘记更新您的列表指针。

错误 2:

while(ptr){
printf("%d ", ptr -> num);
Number_List = ptr -> next;
}

应该是

while(ptr){
printf("%d ", ptr -> num);
ptr = ptr -> next;
}

这会产生一个无限循环。

错误 3:

newNum->next = list;  //In addTerm()

应该是

newNum->next = NULL;

新节点没有下一个节点集。这也产生了一个无限循环。

错误 4:

if(print == temp){
continue;
}

应该是

if(print == temp){
list = list->next;
continue;
}

另一个无限循环。

关于c - 链表段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40166777/

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