gpt4 book ai didi

c - 在链表末尾插入

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

我正在尝试编写一个程序来创建和显示链表,并允许人们在开头、中间或结尾插入一个元素。

在开头或中间插入效果很好。但是,我的程序在最后插入时失败了。请看看并告诉我我哪里出错了或者需要修改什么。这是我的代码:

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

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

typedef struct node NODE;
NODE *node1, *start, *rear, *m, *nodex, *temp1;

int main() {
int i, n1, n2;
start = NULL;
printf("Enter the number of inputs to the list:");
scanf("%d", &n1);

for (i = 0; i < n1; i++) {
// node creation begins here
node1 = (NODE*) malloc(sizeof(NODE));
int inf;
printf("Enter node value:");
scanf("%d", &inf);
node1->number = inf;
node1->next = NULL;

if (start == NULL) {
// first node creation
start = rear = node1;
} else {
m = start;
if (m->number > inf) {
// for insertion in beginning
node1->next = m;
start = node1;
} else {
while (m->next->number < inf) {
// searching to insert in middle of sorted list
m = m->next;
}
temp1 = m->next;
m->next = node1;
node1->next = temp1;
}
}
display(); // to display the linked list
}
return 0;
}

void display() {
nodex = start;
while (nodex != NULL) {
printf("%d ->", nodex->number);
nodex = nodex->next;
}
}

最佳答案

列表末尾会发生什么?

while(m->next->number < inf){
//searching to insert in middle of sorted list
m=m->next;
}

m->nextNULL 时,此检查失败。 NULL->something 失败。所以检查它是否是一个有效的指针,比如:

while(m->next)
if(m->next->number < inf)
m=m->next;
else
break;

关于c - 在链表末尾插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28659485/

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