您的位置:首页 > 职场人生

【面试题】剑指offer 16

2017-03-07 16:43 357 查看
题目:

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

#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;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  面试题 链表