问题描述:
翻转一个链表
样例:给出一个链表1->2->3->NULL,这个翻转后的链表为3->2->1->NULL。
实现思路:
定义两个指针变量票p,t。初始时,p指向NULL,t指向第二个节点。让第一个节点head的指针域指向p,然后指针变量p,head,t,依次往后移一个节点。
代码:
ListNode *reverse(ListNode *head) {
ListNode *p = NULL;
while (head != NULL) {
ListNode *t = head->next;
head->next = p;
p = head;
head = t;
}
return p;
}
感想:
反转链表时,在第二个节点指针域指向第一个节点之前要先保存好第三个节点。反转链表时,原链表的第一个节点的指针域指向NULL;