编程语言

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012737445/article/details/16827809

#include <stdio.h>
#include <stdlib.h>
#define  N 20


typedef struct LNode
{ int data;
  struct LNode *next;
}LNode,*LinkList;

LinkList CreatList(LinkList &L,int n);
int GetElemList(LinkList &L,int i );
LinkList sortList(LinkList &L,int n);
void MergeList(LinkList &La,LinkList &Lb,LinkList &Lc);

LinkList CreatList(LinkList &L,int n)
{int i;
 LinkList p;
 L=(LinkList)malloc(sizeof(LNode));
 L->next=NULL;
 for(i=n;i>0;i--)
 {p=(LinkList)malloc(sizeof(LNode));
  p->data = rand()%100;
  p->next=L->next;
  L->next=p;
 }
 return(L);
}

int GetElemList(LinkList &L,int i )
{int j,e;
 LinkList p;  
 p=L->next;
 j=1;
 while( p && j<i)
  {
   p=p->next; ++j;
    }
 if  (!p|| j>i)  return (0);
 e = p->data;
 return (e);
}

LinkList sortList(LinkList &L,int n)
{int i,j,t;
 LinkList p,q;
 
 for(i=0;i<n-1;i++)
 {p=L->next;
  q=L->next->next;
    for(j=0;j<n-1-i;j++)
 {if(p->data > q->data)  {t=p->data;  p->data=q->data;  q->data=t;}
     p=p->next;  q=q->next;
 }
 }
 for(i=1;i<=n;i++)
  printf("%3d ",GetElemList(L,i));
 printf("\n");
 return(L);
 }


void  MergeList(LinkList &La,LinkList &Lb,LinkList &Lc)
{int i;
 LinkList pa, pb, pc;
    pa = La->next;    pb = Lb->next;
    Lc = pc = La;            
    while (pa && pb)
    {
     if (pa->data <= pb->data)
  {
       pc->next = pa;     pc = pa;      pa = pa->next;
  }
    else { pc->next = pb;   pc = pb;   pb = pb->next; }
 }
  pc->next = pa ? pa : pb; 
  free(Lb);                

  for(i=1;i<=N;i++)
  printf("%3d ",GetElemList(Lc,i));

 
}

void main()
{LinkList La,Lb,Lc;
 int n=10;

 La=CreatList(La,n);
 Lb=CreatList(Lb,n);
 
 La=sortList(La,n);
 Lb=sortList(Lb,n);
 MergeList(La,Lb,Lc);
 
}

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页