gpt4 book ai didi

c - C语言中在链表末尾插入节点

转载 作者:行者123 更新时间:2023-11-30 17:28:44 26 4
gpt4 key购买 nike

LinkedList 的中间或开头插入节点没有任何问题。然而,最后却不同了。当我尝试打印这些值时,它给出了地址:enter image description here

现在,这是我构建 LinkedList 的方法:

employeeData ed[4];

node *head = NULL, *list = NULL;

for (int i = 0; i < 4; i++)
fscanf(file, "%d %s %d %d %lf", &ed[i].EMP_ID, ed[i].name, &ed[i].dept, &ed[i].rank, &ed[i].salary);

head = (node *)malloc(sizeof(node));

head->employee = ed[0];
head->next = NULL;

list = head;

for (int i = 1; i < 5; i++){

node *ptr = (node *)malloc(sizeof(node));

ptr->employee = ed[i];
ptr->next = NULL;

head->next = ptr;

head = head->next;
}

这是我向其添加节点的方法:

node *newNode = (node *)malloc(sizeof(node)), *temptr = list, *endNode = list;

newNode->employee.EMP_ID = id;
strcpy(newNode->employee.name, name);
newNode->employee.dept = dept;
newNode->employee.rank = rank;
newNode->employee.salary = salary;
newNode->next = NULL;

while (endNode->next != NULL) endNode = endNode->next;

if (id < temptr->employee.EMP_ID){
newNode->next = list;
list = newNode;
}
else if (id > endNode->employee.EMP_ID){
endNode->next = newNode;
}
else{

while ((temptr->next != NULL) && (temptr->next->employee.EMP_ID < newNode->employee.EMP_ID))
temptr = temptr->next;

newNode->next = temptr->next;

temptr->next = newNode;
}

当我尝试删除该值时,它会删除它。但是,它不显示该值。

我做错了什么?

谢谢

最佳答案

正如 BLUEPIXY 所说,问题出在构建过程中。

索引需要在 4 for (int i = 1; i < 4; i++)

而且,我还更改了打印列表的方式。

来自

while (temp->next != NULL){
printf("");
temp = temp->next;
}

while (temp != NULL){
printf("");
temp = temp->next;
}

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

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