gpt4 book ai didi

c - 为什么我的链表中包含一个垃圾值

转载 作者:太空宇宙 更新时间:2023-11-04 01:23:50 26 4
gpt4 key购买 nike

在程序中,第一个节点的元素总是垃圾,我一直试图寻找解决方案,但我找不到任何解决方案。我一直试图检查它很多次,但它就是行不通。

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

typedef struct nd{
int elem;
struct nd * next;
} nodeType;

typedef struct listT{
nodeType *head;
int elemCtr;
} listType;

void input(nodeType **head);
void segregate(nodeType *head, listType *odd, listType *even);
void display(nodeType *head, listType odd, listType even);
int main(){
listType odd, even;
nodeType *head;
odd.head=NULL;
even.head=NULL;
head = NULL;
input(&head);
segregate(head, &odd, &even);
display(head, odd, even);
}

void input(nodeType **head){
printf("\nPlease input numbers input 0 if you wish to end the inputting process.:\n");
int x;
scanf("%d", &x);
for(;x!=0;){
nodeType *newnode;
newnode = (nodeType*)malloc(sizeof(struct nd));
newnode->elem=x;
newnode->next=*head;
*head=newnode;
scanf("%d", &x);
}
}

void segregate(nodeType *head, listType *odd, listType *even){
nodeType **trav;
for(*trav=head;*trav!=NULL;trav=&(*trav)->next){
if((*trav)->elem%2==0){
nodeType *newnode;
newnode = (nodeType*)malloc(sizeof(struct nd));
newnode->elem = (*trav)->elem;
newnode->next = even->head;
even->head = newnode;
}
else{
nodeType *newnode;
newnode = (nodeType*)malloc(sizeof(struct nd));
newnode->elem = (*trav)->elem;
newnode->next = odd->head;
odd->head = newnode;
}
}
}

void display(nodeType *head, listType odd, listType even){
printf("\nAll numbers :");
nodeType **trav;
for(trav=&head;*trav!=NULL;trav=&(*trav)->next){
printf("\n%d", (*trav)->elem);
}
printf("\nEven numbers :");
for(trav=&even.head;*trav!=NULL;trav=&(*trav)->next){
printf("\n%d", (*trav)->elem);
}
printf("\nOdd numbers :");
for(trav=&odd.head;*trav!=NULL;trav=&(*trav)->next){
printf("\n%d", (*trav)->elem);
}
}

我也试过在没有隔离和显示功能的情况下运行代码,我意识到它不会将第一个节点的元素更改为垃圾。我不知道可能是什么问题。

最佳答案

变量 trav 在函数 segregate 中未初始化,导致未定义的行为:

nodeType **trav;
for(*trav=head ...

我没有遍历整个代码,但你的意思是:

nodeType** trav = &head;

关于c - 为什么我的链表中包含一个垃圾值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35539475/

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