数据结构实验打印资料.docx
- 文档编号:17303202
- 上传时间:2023-07-23
- 格式:DOCX
- 页数:31
- 大小:18.02KB
数据结构实验打印资料.docx
《数据结构实验打印资料.docx》由会员分享,可在线阅读,更多相关《数据结构实验打印资料.docx(31页珍藏版)》请在冰点文库上搜索。
数据结构实验打印资料
1、设有两个有序序列,利用归并排序将它们排成有序表,并输出
#include
#include
typedefstruct{
int*elem;
intlength;
intlistsize;
}sqlist;
intinitlist(sqlist&L){
L.elem=(int*)malloc(100*sizeof(int));
if(!
L.elem)return0;
L.length=0;
L.listsize=100;
return1;
}
voidinput(sqlist&L,intn){
inti,j;
for(i=0;i scanf("%d",&j);L.elem[i]=j; } L.length=n; } intoutput(sqlistL){ inti; if(! L.length)return0; for(i=0;i printf("%d",L.elem[i]); } return1; } intmergelist(sqlistla,sqlistlb,sqlist&lc){ int*pa,*pb,*pc,*palast,*pblast; pa=la.elem;pb=lb.elem; lc.listsize=lc.length=la.length+lb.length; pc=lc.elem=(int*)malloc(lc.listsize*sizeof(int)); if(! lc.elem)return0; palast=la.elem+la.length-1; pblast=lb.elem+lb.length-1; while(pa<=palast&&pb<=pblast){ if(*pa<=*pb)*pc++=*pa++; else*pc++=*pb++; } while(pa<=palast)*pc++=*pa++; while(pb<=pblast)*pc++=*pb++; return1; } voidmain(){ sqlistla,lb,lc; initlist(la); printf("请输入la的数据\n"); input(la,5); initlist(lb); printf("请输入lb的数据\n"); input(lb,2); printf("\n"); initlist(lc); mergelist(la,lb,lc); output(lc); } 2、设有一有序序列,从键盘输入一个数,判别是否在序列中,如果在输出“YSE”;否则,将它插入到序列中使它仍然有序,并输出排序后的序列 #include #include typedefstruct{ int*elem; intlength; intlistsize; }sqlist; intinitlist(sqlist&L){ L.elem=(int*)malloc(100*sizeof(int)); if(! L.elem)return0; L.length=0; L.listsize=100; return1; } voidinput(sqlist&L,intn){ inti,j; for(i=0;i scanf("%d",&j);L.elem[i]=j; } L.length=n; } intoutput(sqlistL){ inti; if(! L.length)return0; for(i=0;i printf("%d",L.elem[i]); } return1; } intlistInsert(sqlist&L,inti,inte){ int*newbase,*q,*p; if(i<1||i>L.length+1)return0; if(L.length>=L.listsize){ newbase=(int*)realloc(L.elem,(L.listsize+10)*sizeof(int)); if(! newbase)return0; L.elem=newbase; L.listsize+=10; } q=&(L.elem[i-1]); for(p=&(L.elem[L.length-1]);p>=q;--p)*(p+1)=*p; *q=e; ++L.length; return1; } voidcomp(sqlistL,inte){ int*p,i,f=0; p=L.elem; for(i=0;i if(L.elem[i]==e){ f=1;printf("Yes\n"); } if(f==0){ listInsert(L,i+1,e);output(L); } } voidmain(){ inte; sqlistl; initlist(l); printf("请输入l的数据\n"); input(l,5); printf("请输入数据\n"); scanf("%d",&e); comp(l,e); } 3、设有一有序序列,从键盘输入一个数,判别是否在序列中,如果不在,则输出“NO”,否则,将它从序列中删除它,并输出删除后的序列。 #include #include typedefstruct{ int*elem; intlength; intlistsize; }sqlist; intinitList(sqlist&L) { L.elem=(int*)malloc(100*sizeof(int)); if(! L.elem)return0; L.length=0; L.listsize=100; return1; } intinput(sqlist&L,intn) {inti=0; if(n>L.listsize)return0; for(;i scanf("%d",&L.elem[i]); } L.length=n; return1; } intoutput(sqlistL) {inti; for(i=0;i printf("\n"); return1; } intlistDelete(sqlist&l,inti,int&e) { int*p,*q; if(i<1||i>l.length+1)return0; p=&(l.elem[i-1]); e=*p; q=l.elem+l.length-1; for(++p;p<=q;++p)*(p-1)=*p; --l.length; return1; } voidcomp(sqlistL,inte){ int*p,i,f=0; p=L.elem; for(i=0;i if(L.elem[i]==e){ listDelete(L,i+1,e); f=1; } if(f==0) printf("No\n"); elseoutput(L); } voidmain(){ inte; sqlistl; initList(l); printf("请输入l的数据\n"); input(l,5); printf("请输入数据\n"); scanf("%d",&e); comp(l,e); } 4、从键盘输入一组任意数据,建立一个有序链表,并从链头开始输出该链,使输出结果是有序的。 #include #include typedefstructlnode{ intdata; structlnode*next; }lnode,*linklist; voidcreat(linklist&l,intn){ inti; linklistp,s; l=(linklist)malloc(sizeof(lnode)); l->next=NULL; p=l; for(i=1;i<=n;i++){ s=(linklist)malloc(sizeof(lnode)); scanf("%d",&s->data); p->next=s; p=s; } p->next=NULL; } voidoutput(linklistl){ linklistp; p=l->next; while(p){ printf("%d",p->data); p=p->next; } printf("\n"); } voidsort(linklist&l){ linklistp,q; inte; p=l->next; while(p){ q=p->next; while(q){ if(q->data e=q->data; q->data=p->data; p->data=e; } q=q->next; } p=p->next; } } voidmain(){ linklistl; intn; printf("请输入n\n"); scanf("%d",&n); printf("请输入%d个数\n",n); creat(l,n); sort(l); output(l); } 5、从键盘输入一组任意数据,建立一个包含所有输入数据的单向循环链表,并从链表的任意开始,依次输出该链表中的所有结点。 #include #include typedefstructlnode{ intdata; structlnode*next; }lnode,*linklist; voidcreat(linklist&l,intn){ inti; linklistp,s; l=(linklist)malloc(sizeof(lnode)); l->next=NULL; p=l; for(i=1;i<=n;i++){ s=(linklist)malloc(sizeof(lnode)); scanf("%d",&s->data); p->next=s; p=s; } p->next=l->next; } voidoutput(linklistl,inti){ linklistp,s; p=l->next; for(intj=0;j p=p->next; } s=p; do{ printf("%d",p->data); p=p->next; }while(p! =s); printf("\n"); } voidmain(){ linklistl; intn; printf("请输入n\n"); scanf("%d",&n); printf("请输入%d个数\n",n); creat(l,n); printf("输入结果为: \n"); output(l,3); } 10、设有一个链表,(自己建立,数据从键盘输入),再从键盘输入一个数,判别是否在链表中,如果不在,则输出“NO“,否则,将它从链表中删除,并输出删除后的链表。 #include #include typedefstructlnode{ intdata; structlnode*next; }lnode,*linklist; voidcreat(linklist&l,intn){ inti; linklistp,s; l=(linklist)malloc(sizeof(lnode)); l->next=NULL; p=l; for(i=1;i<=n;i++){ s=(linklist)malloc(sizeof(lnode)); scanf("%d",&s->data); p->next=s; p=s; } p->next=NULL; } voidoutput(linklistl){ linklistp; p=l->next; while(p){ printf("%d",p->data); p=p->next; } printf("\n"); } intlistDelete(linklist&l,linklistq,linklistp){ q->next=p->next; return1; } voidcheck(linklistl,inte){ linklistp,q; intf=0; q=l; p=l->next; while(p){ if(p->data==e){ f=1; listDelete(l,q,p); } q=q->next; p=p->next; } if(f==0)printf("No\n"); elseoutput(l); } voidmain(){ linklistl; inte,n; printf("请输入n\n"); scanf("%d",&n); printf("请输入%d个数据\n",n); creat(l,n); printf("请输入数据\n"); scanf("%d",&e); check(l,e); } 11、设有一个链表,(自己建立,数据从键盘输入),再从键盘输入一个数,判别是否在链表中,如果在输出“YSE”,否则,将它从插入到链头,并输出插入后的链表。 #include #include typedefstructlnode{ intdata; structlnode*next; }lnode,*linklist; voidcreat(linklist&l,intn){ inti; linklistp,s; l=(linklist)malloc(sizeof(lnode)); l->next=NULL; p=l; for(i=1;i<=n;i++){ s=(linklist)malloc(sizeof(lnode)); scanf("%d",&s->data); p->next=s; p=s; } p->next=NULL; } voidoutput(linklistl){ linklistp; p=l->next; while(p){ printf("%d",p->data); p=p->next; } printf("\n"); } voidlinkinsert(linklist&l,inte){ linklistp,s; p=l->next; s=(linklist)malloc(sizeof(lnode)); s->data=e; s->next=p; l->next=s; } voidcheck(linklistl,inte){ linklistp; intf=0; p=l->next; while(p){ if(p->data==e) f=1; p=p->next; } if(f==1)printf("Yes\n"); else{linkinsert(l,e);output(l);} } voidmain(){ linklistl; inte,n; printf("请输入n\n"); scanf("%d",&n); printf("请输入%d个数据\n",n); creat(l,n); printf("请输入数据\n"); scanf("%d",&e); check(l,e); } 12、设有一个链表,(自己建立,数据从键盘输入),再从键盘输入一个数,判别是否在链表中,如果在输出“YSE”,否则,将它从插入到链尾,并输出插入后的链表。 #include #include typedefstructlnode{ intdata; structlnode*next; }lnode,*linklist; voidcreat(linklist&l,intn){ inti; linklistp,s; l=(linklist)malloc(sizeof(lnode)); l->next=NULL; p=l; for(i=1;i<=n;i++){ s=(linklist)malloc(sizeof(lnode)); scanf("%d",&s->data); p->next=s; p=s; } p->next=NULL; } voidoutput(linklistl){ linklistp; p=l->next; while(p){ printf("%d",p->data); p=p->next; } printf("\n"); } voidlinkinsert(linklist&l,inte){ linklistp,q,s; p=l->next; while(p){ q=p; p=p->next; } s=(linklist)malloc(sizeof(lnode)); s->data=e; q->next=s; s->next=NULL; } voidcheck(linklistl,inte){ linklistp; intf=0; p=l->next; while(p){ if(p->data==e) f=1; p=p->next; } if(f==1)printf("Yes\n"); else{linkinsert(l,e);output(l);} } voidmain(){ linklistl; inte,n; printf("请输入n\n"); scanf("%d",&n); printf("请输入%d个数据\n",n); creat(l,n); printf("请输入数据\n"); scanf("%d",&e); check(l,e); } 13、编写栈的压栈push、弹栈pop函数,从键盘输入一组数据,逐个元素压入堆栈,然后再逐个从栈中弹出它们并输出 #include #include typedefstruct{ int*base; int*top; intstacksize; }sqstack; intinitStack(sqstack&s){ s.base=(int*)malloc(5*sizeof(int)); if(! s.base)return0; s.top=s.base; s.stacksize=5; return1; } intpush(sqstack&s,inte){ if(s.top-s.base>=s.stacksize){ s.base=(int*)realloc(s.base,(s.stacksize+2)*sizeof(int)); if(! s.base)return0; s.top=s.base+s.stacksize; s.stacksize+=2; } *s.top++=e; return1; } intpop(sqstack&s,int&e){ if(s.top==s.base)return0; e=*--s.top; return1; } voidmain(){ sqstacks; inte,i,n; initStack(s); printf("请输入n的值\n"); scanf("%d",&n); printf("请输入%d个数据\n",n); for(i=0;i scanf("%d",&e); push(s,e); } printf("输出为: \n"); for(i=0;i pop(s,e); printf("%d",e); } printf("\n"); } 14、编写栈的压栈push、弹栈pop函数,用它判别()的匹配问题 #include #include typedefstruct{ int*base; int*top; intstacksize; }sqstack; intinitStack(sqstack&s){ s.base=(int*)malloc(5*sizeof(int)); if(! s.base)return0; s.top=s.base; s.stacksize=5; return1; } intpush(sqstack&s,chare){ if(s.top-s.base>=s.stacksize){ s.base=(int*)realloc(s.base,(s.stacksize+2)*sizeof(int)); if(! s.base)return0; s.top=s.base+s.stacksize; s.stacksize+=2; } *s.top++=e; return1; } intpop(sqstack&s,char&e){ if(s.top==s.base)return0; e=*--s.top; return1; } vo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 实验 打印 资料