【发布时间】:2020-06-23 16:05:06
【问题描述】:
Student *addToHead(Student *node, int data) {
Student *temp;
temp = createNode(data);
temp->nextPtr = node;
return temp;
}
这段代码没有插入到链表的头部我不知道为什么。 我没有在链表的开头使用虚拟节点。
这是我的整个主要功能:
int main(void) {
Student *test = initList();
int searchTest = 0;
test = addToHead(test, 3);
test = addToHead(test, 2);
test = addToHead(test, 1);
test = addToTail(test, 4);
test = addToTail(test, 5);
printList(test);
searchTest = searchAge(test, 4);
printf("%d\n", searchTest);
test = freeList(test);
}
这是正在输出的内容:
4
5
0
Free was successful
尾部插入正确,但头部未正确插入。
这是tail的代码
Student *addToTail(Student *node, int data) {
Student *temp;
temp = createNode(data);
temp->age = data;
if (node == NULL) {
node = temp;
} else {
while (node->nextPtr != NULL) {
node = node->nextPtr;
}
node->nextPtr = temp;
}
return node;
}
【问题讨论】:
-
我的猜测是你忽略了函数返回的内容。
-
您还没有展示如何使用该功能。该功能执行所需的操作;但是,您必须正确使用返回值。确保创建 MCVE (Minimal, Complete, Verifiable Example)(或 MRE 或 SO 现在使用的任何名称)或 SSCCE (Short, Self-Contained, Correct Example)。
-
@joycem8845 这可能是函数 addToTail 工作不正确的结果。显示它。
-
@VladfromMoscow 我现在添加了尾部代码。
-
@joycem8845 在您添加函数 addToTail 的定义之前,我已经写好了答案。:)
标签: c struct linked-list singly-linked-list