#include<iostream>
using namespace std;
const int N=6;
typedef int DataType;
typedef struct node{
DataType data;
struct node* next;
}LinkedNode,*LinkList;
LinkList CreateList(DataType a[N])
{
LinkedNode* ListHead=new LinkedNode;
ListHead->data=a[0];
ListHead->next=NULL;
for(int i=N-1;i>=1;i--)
{
LinkedNode* p=new LinkedNode;
p->data=a[i];
p->next=ListHead->next;
ListHead->next=p;
}
return ListHead;
}
void PrintList(LinkList ListHead)
{
if(NULL==ListHead)cout<<"The List is empty!"<<endl;
else
{
LinkedNode* p=ListHead;
while(p!=NULL)
{
cout<<p->data<<" ";
p=p->next;
}
cout<<endl;
}
}
void ReverseList1(LinkList &ListHead)
{
if( NULL==ListHead || NULL==ListHead->next )
{
return ;
}
LinkedNode* pPre=ListHead;
LinkedNode* pCur=pPre->next;
LinkedNode* pNext=NULL;
while(pCur!=NULL)
{
pNext=pCur->next;
pCur->next=pPre;
pPre=pCur;
pCur=pNext;
}
ListHead->next=NULL;
ListHead=pPre;
}
LinkList Merge(LinkList head1, LinkList head2)
{
if (head1 == NULL)
{
return head2;
}
if (head2==NULL)
{
return head1;
}
LinkList head = NULL;
if (head1->data < head2->data)
{
head = head1;
head->next = Merge(head1->next, head2);
}
else
{
head = head2;
head->next = Merge(head1, head2->next);
}
return head;
}
int main()
{
int a[N]={18,2,30,4,5,6};
LinkedNode* list=CreateList(a);
PrintList(list);
ReverseList1(list);
PrintList(list);
return 0;
}