编程语言

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值