本题要求实现一个函数,将给定单向链表逆置,即表头置为表尾,表尾置为表头。链表结点定义如下:
函数接口定义:
其中head
是用户传入的链表的头指针;函数reverse
将链表head
逆置,并返回结果链表的头指针。
裁判测试程序样例:
输入样例:
输出样例:
//这种用图来解释的方式对理解有用吗?如果没有下次就不弄了,说一下呗,谢谢!因为作图真的好麻烦啊!
struct ListNode* reverse(struct ListNode* head)//2
{ //3
struct ListNode* q = head, * t, * p = NULL;//4
while (q) //5
{ //6
t = q->next; //7
q->next = p; //8
p = q; //9
q = t; //10
} //11
return p; //12
} //13
/*注:我的思路就是让这个链表的链接方向倒过来,比如:
-> -> ->变成<- <- <-
这样从最右边开始输出变倒过来了至于具体方式我会用下面
的图来说明,希望有帮助,同时也希望得到你的建议*/