#include<iostream>
using namespace std;typedef struct Node
{
int data;
struct Node* next;
}Node,*LinkList;
void InitList(LinkList &L)
{
L = new Node;
L->next = NULL;
L->data = 0;
}
int ListInsert(LinkList L,int pos, int elem)
{
int j = 0;
Node *p = L;
if(pos<1) return 0;
while( ++j <pos&& NULL != p->next )
{
p = p->next;
}
if(j==pos)
{
Node * t=new Node;
t->next = p->next;
t->data = elem;
p->next =t;
++(L->data) ;
return 1;
}
if(NULL == p->next) return 0;
}
int ListDelete(LinkList L,int pos, int &elem)
{
if(pos<1) return 0 ;
int j=0;
Node *p= L;
while( ++j <pos&& NULL != p->next )
{p=p->next;}
if(j == pos)
{
Node *t=p->next;
elem = t->data;
p->next = t->next;
delete t;
t =NULL;
--L->data;
return 1;
}
if(NULL == p->next)
return 0;
}
void reverse(LinkList &L)
{
if(NULL == L || NULL ==L->next) return ;
Node *p=L->next,*t=p->next,*n;
p->next = NULL;
while(NULL != t )
{
n = t->next;
t->next = p;
p = t;
t = n;
}
L->next =p;
}
int PrintList(LinkList L)
{
Node *p= L->next;
while(NULL!=p)
{
cout<<p->data<<endl;
p = p->next;
}
return 1;
}
int main(void)
{
LinkList L = NULL;
InitList(L);
for(int i=0;i<10;++i)
{
ListInsert(L,i+1,i+1);
cout<<"HHHHH"<<i<<endl;
}
PrintList(L);
//
cout<<"反转后:"<<endl;
reverse(L);
PrintList(L);
return 0;
}
结果如下所示: