链式线性表的操作

来源:互联网 发布:四川麻将源码下载 编辑:程序博客网 时间:2024/04/30 02:48
//链式线性表的 创建,查找,删除,插入,合并操作#include <iostream>#include <cstdlib>#include <cstdio>using namespace std;typedef struct LNode{    int data;    struct LNode *next;}LNode,*LinkList;void CreatList(LinkList &L,int n){  L=(LinkList) malloc(sizeof(LNode));  LinkList q=L;  for(int i=0;i<n;i++){              LinkList p=(LinkList) malloc(sizeof(LNode));              scanf("%d",&(p->data));              q->next=p;              q=p;              q->next=NULL;  }}void ShowList(LinkList L){            LinkList q=L->next;   while (q!=NULL){         cout<<(q->data)<<" ";         q=q->next;   }   cout<<endl;}int GetElem_L(LinkList L,int i,int &e){  //根据序号查找   int j=1;   LinkList p=L->next;   while (j<i&&p!=NULL){              p=p->next;              j++;}if(j>i||p==NULL){              cout<<"error"<<endl;              return 0;}else{  e=p->data;  return 1;}}int ListInsert(LinkList &L,int i,int e){     LinkList p=L;     int j=1;     while (j<i&&p->next!=NULL){              p=p->next;              j++;     }     if(j>i||p->next==NULL){           cout<<"error"<<endl;              return 0;     }else {        LinkList q=(LinkList)malloc (sizeof (LNode));        q->data=e;        q->next=p->next;        p->next=q;return 1;     }}int ListDelete(LinkList &L,int i,int &e){  LinkList p=L;  int j=1;  while(j<i&&p->next!=NULL){                            p=p->next;                           j++;  }  if(j>i||p->next==NULL){              cout<<"error"<<endl;              return 0;  }else      e=p->next->data;    p->next=p->next->next;    return 1;  }void MergeList(LinkList &La,LinkList &Lb,LinkList &Lc){ LinkList pa,pb,pc;  Lc=(LinkList)malloc(sizeof(LNode)); pc=Lc; pa=La->next; pb=Lb->next; while(pa!=NULL&&pb!=NULL){              if(pa->data < pb->data){                            pc->next=pa;                            pc=pa;                            pa=pa->next;              }else{                            pc->next=pb;                            pc=pb;                            pb=pb->next;              } }              if(pa){                            pc->next=pa;              }else{                   pc->next=pb;              }free(La);free(Lb);}int main(){    LinkList La,Lb,Lc;    int n;    cin>>n;    CreatList(La,n);     CreatList(Lb,n);      //CreatList(Lc,2*n);       //Lc=(LinkList)malloc(sizeof(LNode));    //ShowList(La);    //ShowList(Lb);   /* int get;    if(GetElem_L( L,2,get))    cout<<get<<endl;*/    //int ins=100;//    if( ListInsert(L,2,100) ){//       ShowList(L);//    }//    int del;//    if( ListDelete( L,4,del) ){//         ShowList(L);//         cout<<del<<endl;//    }    MergeList(La,Lb,Lc);    ShowList(Lc);    return 0;}

链式线性表
0 0
原创粉丝点击