您的位置:首页 > Web前端

从尾到头打印链表<剑指offer>

2016-09-16 21:16 274 查看
题目描述:输入一个链表,从尾到头打印链表每个节点的值。

链表节点定义:

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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  反转链表