题目描述:输入一个链表,从尾到头打印链表每个节点的值。
链表节点定义:
struct ListNode{
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};
解题思路:
(1)反转链表(2)对应输出链表的值
解题步骤:
(1)如果链表为空,直接返回;如果不为空,继续程序
if(head==NULL)
return list;
(2)反转链表:每次将后面一个节点的next指针指向前一个节点的地址,直到最后一个节点。 由于尾节点的next为NULL即跳出循环时now=NULL,此时需要将头结点head的next置为空,才能作为反转链表的尾节点,同时将head=pre(在跳出循环时,将尾节点赋给了pre);
ListNode *pre,*now,*temp;
pre=head;
now=pre->next;
while(now!=NULL)
{
temp = now->next;
now->next = pre;
pre = now;
now = temp;
}
head->next=NULL;
head=pre;
now=head;
(3)输出反转后链表的值
while(now!=NULL)
{
list.push_back(now->val);
now=now->next;
}
return list;