|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
int main() {
node head = {NULL,NULL};
node* list = &head;
add_behind(list, 2);
add_behind(list, 3);
add_behind(list, 1);
add_behind(list, 4);
list = list->next; 为什么这样就不对了呀,其他的地方是函数,这是一个链表
printf("%d", middleElement(list));
bool a = iscycle(list);
node* ls2 = reverse(list);
return 0;
}
这段代码中的问题在于链表节点的指针传递和修改。在调用`add_behind`函数时,我们并没有将新节点正确连接到链表中。导致在调用`middleElement`、`iscycle`和`reverse`函数时,参数list已经不是指向head节点的指针了。
修复方法如下:
- int main() {
- node head = {NULL, NULL};
- node* list = &head;
- add_behind(list, 2);
- add_behind(list, 3);
- add_behind(list, 1);
- add_behind(list, 4);
- list = head.next; // 将list指向头节点的下一个节点
- printf("%d\n", middleElement(list));
- bool a = iscycle(&head); // 需要传入头节点的指针
- node* ls2 = reverse(&head); // 需要传入头节点的指针
- return 0;
- }
复制代码
在调用`middleElement`、`iscycle`和`reverse`函数时,传入的参数应该是头节点的指针`&head`,而不是链表中的某个节点的指针。
希望这次能够解决您的问题,如果还有其他疑问,请随时告诉我。
|
|