在逆置单向链表的主函数里

为什么我写
int main()
{
showlist (creat());
showlist (reverse(head));
}正常
然而
int main()
{
showlist (creat());
reverse(head)
showlist (head));
}只输出表头一个数
showlist是输出链表所有数的函数
creat 创建链表
reverse逆置函数原型ex* reverse(ex *head)
因为我的head是全局变量 所以我觉得是一样的

没有太看懂你这个问题,关于单链表的逆序,也就是调整每个指针的指向,让其指向相反的方向,但是你需要保存一下当前指针的next指针内数据

为什么我写
int main()
{
showlist (creat());
showlist (reverse(head));
}正常
然而
int main()
{
showlist (creat());
reverse(head)
showlist (head));
}只输出表头一个数
showlist是输出链表所有数的函数
creat 创建链表
reverse逆置函数原型ex* reverse(ex *head)
因为我的head是全局变量 所以我觉得是一样的

废话,你这样写肯定就出错了啊,先不说代码,我可以猜的出你的你逆序的思路是“先将表头的next置空,然后将第二个结点的next指向
新的尾结点,依次往后循环。。。那么现在看看你的代码的问题出在了哪里:”
int main()
{
showlist (creat());
reverse(head);
showlist (head));
}
你在reverse(head);代码执行之后,并没有指针去接受它的返回值(新的头),所以你的showlist(head);这行代码中依然是旧的头,而且你的
旧的头在你的逆序代码里面已经将他的next给指了空,那么你输出的肯定只能是并且只可以是唯一的旧的头结点...