从尾到头打印链表

来源:互联网 发布:mac 文件归类 编辑:程序博客网 时间:2024/06/06 17:32
输入一个链表,从尾到头打印链表每个节点的值。

可以用库函数解题。每次在vector的头部插入即可,没什么技术含量。代码如下:

class Solution {public:    vector<int> printListFromTailToHead(struct ListNode* head) {        vector<int> result;        while(head!=NULL){            result.insert(result.begin(),head->val);            head=head->next;        }        return result;    }};

其实这是个链表反序的问题,主要在于处理单链表指针的修改。用三个相邻指针来处理链表的反序。以中间的指针为基准,负责指针的修改,前后两个指针主要用于前后节点的定位。代码如下:

class Solution {public:    vector<int> printListFromTailToHead(struct ListNode* head) {        ListNode *p,*q, *t;        p=NULL;        q=head;        while(q!=NULL){            t=q->next;            q->next=p;            p=q;            q=t;        }        vector<int> result;        while(p!=NULL){            result.push_back(p->val);            p=p->next;        }        return result;    }};
0 0
原创粉丝点击