剑指offer 反向遍历链表

来源:互联网 发布:linux服务器端口不通 编辑:程序博客网 时间:2024/06/04 08:26
#include <iostream>#include <algorithm>#include <string>#include <vector>#include <cstdio>#include <cstdlib>using namespace std;//链表的反遍历,利用栈struct ListNode{  int val;  struct ListNode *next;};vector<int> print(struct ListNode* head){    vector<int> s;    if(head!=NULL){        if(head->next!=NULL){            print(head->next);        }        cout<<head->val<<" ";
        s.push_back(head->val);        head=head->next;
    }    return s;}int main(){    int n;    ListNode *head;    ListNode *p;    vector<int> vals;    cin>>n;    int val;    cin>>val;    head=(ListNode *)new ListNode;    head->val=val;    head->next=NULL;    p=head;    for(int i=1;i<n;i++){        ListNode *q=(ListNode *)new ListNode;        int val;        cin>>val;        q->val=val;        q->next=NULL;        p->next=q;        p=p->next;    }    vals=print(head);    return 0;}



利用递归。打印一个节点,这个节点a如果有next节点,则先打印next节点,然后将a节点加入栈中。最后头结点在栈顶,返回栈的时候,栈顶正好是头结点。

0 0
原创粉丝点击