题目:
定义一个链表的头结点,反向输出链表
#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;
}