飞扬范文网
当前位置 首页 >心得体会 >

递增顺序表合并

发布时间:2021-09-28 15:34:53 浏览数:

 #include<stdio.h> #include<stdlib.h> #include<malloc.h> #define LIST_INIT_SIZE 100 #define LISTINCREMENT 10 #define OVERFLOW -2 typedef int ElemType; typedef struct {

 ElemType *elem;

 int length;

 int listsize; }SqList; void InitList_sq(SqList *l,int n) {

 int i;

 l->elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));//注意对于指针成员elem 的引用是否正确哦

 if(!l->elem) exit(OVERFLOW);

 l->length=n;

 l->listsize=LIST_INIT_SIZE;

 for(i=0;i<n;i++)

  scanf("%d",&l->elem[i]); } void ListTraverse(SqList *l) {

  int i;

  for(i=0;i<l->length;i++)

 printf("%3d",l->elem[i]);

  printf("\n");

 } void MergeList (SqList la,SqList lb,SqList *lc) {

 int i=0,j=0,k=0;

 lc->length=la.length+lb.length;

 lc->elem=(ElemType *)malloc( (lc->length)*sizeof(ElemType));

 while( (i<la.length)&&(j<lb.length))

 {

  if(la.elem [i]<=lb.elem[j])

  {

 lc->elem[k++]=la.elem[i];

 i=i+1;

  }

  else

  {

 lc->elem[k++]=lb.elem[j];

 j=j+1;

  }

  }

 while(i<la.length)

 {

  lc->elem[k++]=la.elem[i++];

 }

 while(j<lb.length)

 {

  lc->elem[k++]=lb.elem[j++];

 }

 lc->length=k;

 }

 main() { SqList la,lb,lc; la.length=4; lb.length=7; printf("请输入 la 中%d 个元素",la.length ); InitList_sq( &la,la.length); printf("la 中元素是:\n"); ListTraverse(&la); printf("请输入 lb 中%d 个元素",lb.length ); InitList_sq( &lb,lb.length); printf("lb 中元素是:\n"); ListTraverse(&lb); MergeList(la,lb,&lc); printf("lc 中元素是:\n"); ListTraverse(&lc); }

相关热词搜索: 递增 合并 顺序