【面试题】剑指offer 16

来源:互联网 发布:unity3d怎么做建筑 编辑:程序博客网 时间:2024/06/11 09:54

题目:
定义一个链表的头结点,反向输出链表

#include<iostream>using namespace std;struct ListNode{    int _value;    ListNode* _pNext;};class List{public:    List()        :head(NULL)    {}    ~List()    {        delete head;        head=NULL;    }    ListNode* ReserList()    {        ListNode* RerserHead=NULL;        ListNode* node=head;        ListNode* prev=NULL;        while (node)        {            ListNode* next=node->_pNext;            if(next==NULL)                RerserHead=node;            node->_pNext=prev;            prev=node;            node=next;        }        return RerserHead;    }    void AddNum(int num)    {        ListNode* newnode=new ListNode();        if (head==NULL)        {            newnode->_value=num;            newnode->_pNext=NULL;            head=newnode;            return;        }        ListNode* cur=head;        while (cur->_pNext)        {            cur=cur->_pNext;        }        newnode->_value=num;        newnode->_pNext=NULL;        cur->_pNext=newnode;    }    void PrintList()    {        ListNode* cur=head;        if (cur==NULL)        {            return;        }        while (cur)        {            cout<<cur->_value<<" ";            cur=cur->_pNext;        }        cout<<endl;    }    void ReserPrint()    {        ListNode* cur=ReserList();        if(cur==NULL)            return;        while (cur)        {            cout<<cur->_value<<" ";            cur=cur->_pNext;        }        cout<<endl;    }private:    ListNode* head;};void test(){    List l;    l.AddNum(1);    l.AddNum(2);    l.AddNum(3);    l.AddNum(4);    l.AddNum(5);    l.AddNum(6);    l.AddNum(7);    l.AddNum(8);    l.AddNum(9);    l.PrintList();    l.ReserPrint();}
#include "List.h"#include<cstdlib>int main(){    test();    system("pause");    return 0;}

结果

0 0
原创粉丝点击