数据结构上机题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构上机题

〃1、设有两个有序序列,利用归并排序将它们排成有序表,并输出。

#i nclude"stdio.h"

#i nclude"stdlib.h"

#defi ne LIST_INIT_SIZE 100

#defi ne LISTINCREMENT 10

#defi ne OVERFLOW -2

#defi ne OK 1

typedef struct

{ int *elem;

int len gth;

int listsize;

}SqList;

int In itList_Sq(SqList &L)

{L.elem=(i nt *)malloc(LIST_INIT_SIZE*sizeof(i nt)); if(!L.elem)exit(OVERFLOW);

L.le ngth=O;

L.listsize=LIST_INIT_SIZE;

return OK;

}

void MergeList_Sq(SqList La,SqList Lb,SqList &Lc)

{int *pa,*pa_last,*pb,*pb_last,*pc;

pa=La.elem;

pa_last=La.elem+La.le ngth-1;

pb=Lb.elem;

pb_last=Lb.elem+Lb .len gth-1;

Lc」i stsize=Lc .len gth=La .len gth+Lb .len gth;

pc=Lc.elem=(i nt*)malloc(Lc.listsize*sizeof(i nt)); if(!Lc.elem)exit(OVERFLOW); while(pa<=pa_last&&pb<=pb_last)

{if(*pa<=*pb)*pc++=*pa++;

else *pc++=*pb++;

}

while(pa<=pa_last)*pc++=*pa++;

while(pb<=pb_last)*pc++=*pb++;

}

int In put(SqList &L)

{ int i,j;

int *pa=L.elem;

printf("要输入的元素个数:”);

scan f("%d",&i);

printf("输入有序序列:");

{ scan f("%d",pa++);

L.len gth=i;

}

prin tf("\n");

return OK;

}

int Output(SqList &L)

{ printf("输出序列:");

int i=0;

while(i

prin tf("\n");

return OK;

}

int mai n()

{SqList La,Lb,Lc;

In itList_Sq(La);

In itList_Sq(Lb);

In itList_Sq(Lc);

In put(La);

In put(Lb);

MergeList_Sq(La,Lb,Lc);

Output(Lc);

return OK;

}

〃2、设有一有序序列,从键盘输入一个数,判别是否在序列中,如果在输出"YSE";否则, 将它插入到序列中使它仍然有序,并输出排序后的序列。

#in clude

#in clude

#defi ne OK 1

#defi ne ERROR -1

#defi ne OVERFLOW -2

#defi ne LIST_INIT_SIZE 100

typedef struct{

int *elem;

int len gth;

int listsize;

}SqList;

in t In itList_Sq(SqList & L){

L.elem=(i nt *)malloc(LIST_INIT_SIZE*sizeof(i nt));

if(!L.elem) exit(OVERFLOW);

L.le ngth=O;

L.listsize=LIST_INIT_SIZE; return OK;

}

int ListInsert_Sq(SqList &L, int i,int e){

if((i<1)||(i>L」e ngth+1)) return ERROR;

int *q=&(L.elem[i-1]);

for(i nt *p=&(L.elem[L.le ngth-1]);p>=q;--p)

*(p+1)=*p;

*q=e;

++L .len gth;

return OK;

}

int elemfi nd(SqList & L,i nt e){

for(i nt i=0;i

{ if(e==L.elem[i]) retur n 1;

if(i==0&&e

{ListInsert_Sq(L,i+2,e);break;} if(e>L.elem[i] &&e

}

void mai n(){

SqList L1;

int a,i, n;

In itList_Sq(L1);

printf("输入序列的元素个数:”);

scan f("%d",&n);

printf("请输入%d个有序元素:",n);

for(i=1;i<=n; i++){

sca nf("%d",&a);

ListI nsert_Sq(L1,i,a);

}

printf("请输入要操作的元素:");

scan f("%d",&a);

if(elemfi nd(L1,a)==1) pri ntf("YES");

else

for(i=0;i

prin tf("%d ", L1.elem[i]);

prin tf("\n");

}

〃3、设有一有序序列,从键盘输入一个数,判别是否在序列中,如果不在,则输出"NO", 否则,将它从序列中删除它,并输出删除后的序列。

#i nclude"stdio.h"

#i nclude"stdlib.h"

#defi ne LIST_INIT_SIZE 100

相关文档
最新文档