单链表(创建,打印,逆序,合并两个有序的链表)

来源:互联网 发布:淘宝女式薄绒内衣套装 编辑:程序博客网 时间:2024/05/15 01:07


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


0 0