數(shù)據(jù)結(jié)構(gòu)期末數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)測(cè)試題(含答案)_第1頁(yè)
數(shù)據(jù)結(jié)構(gòu)期末數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)測(cè)試題(含答案)_第2頁(yè)
數(shù)據(jù)結(jié)構(gòu)期末數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)測(cè)試題(含答案)_第3頁(yè)
數(shù)據(jù)結(jié)構(gòu)期末數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)測(cè)試題(含答案)_第4頁(yè)
數(shù)據(jù)結(jié)構(gòu)期末數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)測(cè)試題(含答案)_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

某順序表(自己定義、建立),查找某數(shù)據(jù)元素,找到返回位序,找不到返回0某順序表(自己定義、建立),在合法的位置插入某數(shù)據(jù)元素某順序表(自己定義、建立),在合法的位置刪除某數(shù)據(jù)元素某順序表(自己定義、建立),就地逆置(即不另設(shè)置空間)用頭插法建立單鏈表,并輸出用尾插法建立單鏈表,并輸出某單鏈表(自己定義、建立),就地逆置(即不另設(shè)置空間)某單鏈表(自己定義、建立),查找某數(shù)據(jù)元素,找到返回位序,找不到返回0某單鏈表(自己定義、建立),求其長(zhǎng)度某單鏈表(自己定義、建立),在合法的位置插入某數(shù)據(jù)元素某單鏈表(自己定義、建立),在合法的位置刪除某數(shù)據(jù)元素某單鏈表(自己定義、建立),在最后位置插入或刪除某二叉鏈表(自己定義、建立),輸出前序、中序、后序遍歷序列某二叉鏈表(自己定義、建立),求其高度(深度)某二叉鏈表(自己定義、建立),求其葉子結(jié)點(diǎn)數(shù)某二叉鏈表(自己定義、建立),求其總結(jié)點(diǎn)個(gè)數(shù)某二叉鏈表(自己定義、建立),將其左右子樹(shù)交換方式:抽簽,單人單桌,每組8-10人,杜絕作弊!時(shí)間:<30分鐘總分:100分?jǐn)?shù)據(jù)結(jié)構(gòu)C語(yǔ)言描述10分?jǐn)?shù)據(jù)結(jié)構(gòu)建立30分基本操作30分主函數(shù)20分運(yùn)行結(jié)果10分用途:20%計(jì)入學(xué)業(yè)成績(jī)1.某順序表(自己定義、建立),查找某數(shù)據(jù)元素,找到返回位序,找不到返回0#include<stdio.h>typedefstruct{intelem[100];intlength;}sqlist;voidcreate(sqlist*L,intn){inti; printf("請(qǐng)輸入%d個(gè)數(shù):\n",n); for(i=0;i<n;i++)scanf("%d",&L->elem[i]); L->length=n;}voidprint(sqlistL,intn){inti; printf("順序表為:"); for(i=0;i<n;i++)printf("-%d",L.elem[i]); printf("\n");}intlocate(sqlistL,intn){inti,e; printf("請(qǐng)輸入需要查找的數(shù):\n"); scanf("%d",&e); for(i=0;i<n;i++) { if(L.elem[i]==e) { printf("找到該數(shù)據(jù):%d\n該數(shù)據(jù)的位置是:%d\n",e,i); } continue; return0; }}main(){sqlistl;intm;printf("輸入此順序表總數(shù)據(jù)的個(gè)數(shù):"); scanf("%d",&m);create(&l,m);print(l,m); locate(l,m);}2.某順序表(自己定義、建立),在合法的位置插入某數(shù)據(jù)元素#include<stdio.h>typedefstruct{intelem[100];intlength;}sqlist;voidcreate(sqlist*L,intn){inti; printf("請(qǐng)輸入%d個(gè)數(shù):\n",n); for(i=0;i<n;i++)scanf("%d",&L->elem[i]); L->length=n;}voidprint(sqlistL,intn){inti; printf("順序表為:"); for(i=0;i<n;i++)printf("-%d",L.elem[i]); printf("\n");}voidinsert(sqlist*L,inti,inte){ intj;if((i<1)||(i>L->length+1)) printf("error"); for(j=L->length;j>=i-1;j--) L->elem[j]=L->elem[j-1]; L->elem[i-1]=e; L->length++;}main(){sqlistl;intm,e,i;printf("輸入此順序表總數(shù)據(jù)的個(gè)數(shù):"); scanf("%d",&m);create(&l,m);print(l,m); printf("請(qǐng)輸入需要插入的數(shù)據(jù):\n"); scanf("%d",&e); printf("請(qǐng)輸入需要插入數(shù)的位置:\n"); scanf("%d",&i); insert(&l,i,e); print(l,l.length);}3.某順序表(自己定義、建立),在合法的位置刪除某數(shù)據(jù)元素#include<stdio.h>typedefstruct{intelem[100];intlength;}sqlist;voidcreate(sqlist*L,intn){inti; printf("請(qǐng)輸入%d個(gè)數(shù):\n",n); for(i=0;i<n;i++)scanf("%d",&L->elem[i]); L->length=n;}voidprint(sqlistL,intn){inti; printf("順序表為:"); for(i=0;i<n;i++)printf("-%d",L.elem[i]); printf("\n");}voiddel(sqlist*L,inti){ intj;if((i<1)||(i>L->length+1)) printf("error"); for(j=i;j<=L->length-1;j++) L->elem[j-1]=L->elem[j]; L->length--;}main(){sqlistl;intm,e;printf("輸入此順序表總數(shù)據(jù)的個(gè)數(shù):"); scanf("%d",&m);create(&l,m);print(l,m); printf("請(qǐng)輸入需要?jiǎng)h除數(shù)據(jù)位置:\n"); scanf("%d",&e); del(&l,e); print(l,l.length);}4.某順序表(自己定義、建立),就地逆置(即不另設(shè)置空間)#include<stdio.h>typedefstruct{intelem[100];intlength;}sqlist;voidcreate(sqlist*L,intn){inti; printf("請(qǐng)輸入%d個(gè)數(shù):\n",n); for(i=0;i<n;i++)scanf("%d",&L->elem[i]); L->length=n;}voidprint(sqlistL,intn){inti; printf("順序表為:"); for(i=0;i<n;i++)printf("-%d",L.elem[i]); printf("\n");}voidnizhi(sqlistL,intn){ inti,t; for(i=0;i<n/2;i++) { t=L.elem[i]; L.elem[i]=L.elem[n-i-1]; L.elem[n-i-1]=t; } for(i=0;i<n;i++)printf("-%d",L.elem[i]); printf("\n");}main(){sqlistl;intm;printf("輸入此順序表總數(shù)據(jù)的個(gè)數(shù):"); scanf("%d",&m);create(&l,m);print(l,m); printf("此順表逆置后為:");nizhi(l,m);}5.用頭插法建立單鏈表,并輸出#include<stdio.h>typedefstructLnode{intdata;structLnode*next;}Lnode,*Linklist;Linklistcreate(intn){inti;LinklistL;Linklistp;L=newLnode;L->next=NULL;for(i=0;i<n;i++){p=newLnode; p->data=i; p->next=L->next; L->next=p;}returnL;}voidprint(LinklistL){ Linklistp; p=L->next; while(p){ printf("-%d",p->data); p=p->next;}printf("\n");}voidmain(){intm=6;Lnode*head;head=create(m);print(head);}6.用尾插法建立單鏈表,并輸出#include<stdio.h>typedefstructLnode{intdata;structLnode*next;}Lnode,*Linklist;Linklistcreate(intn){inti;LinklistL;Linklistp;Linklistr;L=newLnode;L->next=NULL;r=L;for(i=0;i<n;i++){p=newLnode; p->data=i; r->next=p; r=p;}p->next=NULL;returnL;}voidprint(LinklistL){ Linklistp; p=L->next; while(p){ printf("-%d",p->data); p=p->next;}printf("\n");}voidmain(){intm=6;Lnode*head;head=create(m);print(head);}7.某單鏈表(自己定義、建立),就地逆置(即不另設(shè)置空間)#include<stdio.h>typedefstructLnode{intdata;structLnode*next;}Lnode,*Linklist;Linklistcreate(intn){inti;LinklistL;Linklistp;Linklistr;L=newLnode;L->next=NULL;r=L;for(i=0;i<n;i++){p=newLnode; p->data=i; r->next=p; r=p;}p->next=NULL;returnL;}voidprint(LinklistL){ Linklistp; p=L->next; while(p){ printf("-%d",p->data); p=p->next;}printf("\n");}voidnizhi(LinklistL){Linklistp,q;p=L;p=p->next;L->next=NULL;while(p){ q=p; p=p->next; q->next=L->next; L->next=q;}}voidmain(){intm=6;Lnode*head;head=create(m);print(head);printf("此逆置單鏈表為");nizhi(head);print(head);}8.某單鏈表(自己定義、建立),查找某數(shù)據(jù)元素,找到返回位序,找不到返回0#include<stdio.h>typedefstructLnode{intdata;structLnode*next;}Lnode,*Linklist;Linklistcreate(intn){inti;LinklistL;Linklistp;Linklistr;L=newLnode;L->next=NULL;r=L;for(i=0;i<n;i++){p=newLnode; p->data=i; r->next=p; r=p;}p->next=NULL;returnL;}voidprint(LinklistL){ Linklistp; p=L->next; while(p){ printf("-%d",p->data); p=p->next;}printf("\n");}intlocate(LinklistL){inti=1,e; Linklistp; p=L->next; printf("請(qǐng)輸入需要查找第幾個(gè)的結(jié)點(diǎn):"); scanf("%d",&e); while(p) { if(i==e) printf("該結(jié)點(diǎn)的數(shù)據(jù)域是:%d\n",p->data); else return0; p=p->next; i++; }}voidmain(){intm=6;Lnode*head;head=create(m);print(head);locate(head);}9.某單鏈表(自己定義、建立),求其長(zhǎng)度#include<stdio.h>typedefstructLnode{intdata;structLnode*next;}Lnode,*Linklist;Linklistcreate(intn){inti;LinklistL;Linklistp;Linklistr;L=newLnode;L->next=NULL;r=L;for(i=0;i<n;i++){p=newLnode; p->data=i; r->next=p; r=p;}p->next=NULL;returnL;}voidprint(LinklistL){ Linklistp; p=L->next; while(p) { printf("-%d",p->data); p=p->next; } printf("\n");}intlength(LinklistL){inti=0;Linklistp; p=L->next;while(p){ p=p->next; i++;}returni;}voidmain(){intm=6;Lnode*head;head=create(m);print(head);printf("單鏈表長(zhǎng)度:%d\n",length(head));}10.某單鏈表(自己定義、建立),在合法的位置插入某數(shù)據(jù)元素#include<stdio.h>typedefstructLnode{intdata;structLnode*next;}Lnode,*Linklist;Linklistcreate(intn){inti;LinklistL;Linklistp;Linklistr;L=newLnode;L->next=NULL;r=L;for(i=0;i<n;i++){p=newLnode; p->data=i; r->next=p; r=p;}p->next=NULL;returnL;}voidprint(LinklistL){ Linklistp; p=L->next; while(p){ printf("-%d",p->data); p=p->next;}printf("\n");}voidinsert(LinklistL,inti,inte){ intj=0; Linklistp,s; p=L;if((!p)||(j>i-1)) printf("error");while(p&&(j<i-1)) { p=p->next; ++j; } s=newLnode; s->data=e; s->next=p->next; p->next=s;}voidmain(){intm=6,i,e;Lnode*head;head=create(m);print(head);printf("請(qǐng)輸入需要插入的數(shù):\n"); scanf("%d",&e); printf("請(qǐng)輸入需要插入數(shù)的位置:\n"); scanf("%d",&i); insert(head,i,e); printf("新的單鏈表是:"); print(head);}11.某單鏈表(自己定義、建立),在合法的位置刪除某數(shù)據(jù)元素#include<stdio.h>typedefstructLnode{intdata;structLnode*next;}Lnode,*Linklist;Linklistcreate(intn){inti;LinklistL;Linklistp;Linklistr;L=newLnode;L->next=NULL;r=L;for(i=0;i<n;i++){p=newLnode; p->data=i; r->next=p; r=p;}p->next=NULL;returnL;}voidprint(LinklistL){ Linklistp; p=L->next; while(p){ printf("-%d",p->data); p=p->next;}printf("\n");}voiddel(LinklistL,inti){ Linklistp,q; p=L; intj=0; while(p&&(j<i-1)) { p=p->next; ++j; } q=p->next; p->next=q->next; deleteq;}voidmain(){intm=6,e;Lnode*head;head=create(m);print(head);printf("請(qǐng)輸入需要?jiǎng)h除的結(jié)點(diǎn)位置:\n"); scanf("%d",&e); del(head,e); print(head);}12.某單鏈表(自己定義、建立),在最后位置插入或刪除#include<stdio.h>typedefstructLnode{intdata;structLnode*next;}Lnode,*Linklist;Linklistcreate(intn){inti;LinklistL;Linklistp;Linklistr;L=newLnode;L->next=NULL;r=L;for(i=0;i<n;i++){p=newLnode; p->data=i; r->next=p; r=p;}p->next=NULL;returnL;}voidprint(LinklistL){ Linklistp; p=L->next; while(p) {printf("-%d",p->data);p=p->next; } printf("\n");}voidinsert(LinklistL,inte){ Linklistp,s; p=L;while(p->next!=NULL) { p=p->next; } s=newLnode; s->data=e; s->next=p->next; p->next=s;}voiddel(LinklistL){ Linklistp,q; p=L; while(p->next!=NULL) { q=p; p=p->next; } q->next=NULL; deletep;}voidmain(){intm=6,e;Lnode*head;head=create(m);print(head);printf("請(qǐng)輸入需要插入的數(shù):\n"); scanf("%d",&e); insert(head,e); printf("新的單鏈表是:"); print(head);printf("刪除后的單鏈表是:\n"); del(head); print(head);}13.某二叉鏈表(自己定義、建立),輸出前序、中序、后序遍歷序列#include<stdio.h>typedefstructBitnode{intdata;structBitnode*lchild,*rchild;}Bilnode,*Bitree;Bitreecreate(){charch;Bitreet;ch=getchar();if(ch=='*')t=NULL;else{t=newBilnode; t->data=ch; t->lchild=create();t->rchild=create();}returnt;}voidqianxu(Bitreet){if(t){ printf("%c",t->data);qianxu(t->lchild); qianxu(t->rchild); }}voidinorder(Bitreet){if(t){inorder(t->lchild); printf("%c",t->data); inorder(t->rchild); }}voidhouxu(Bitreet){if(t){houxu(t->lchild); houxu(t->rchild); printf("%c",t->data);}}voidmain(){ Bitreet; printf("輸入:"); t=create(); printf("這棵二叉樹(shù)的前序遍歷為:\n"); qianxu(t); printf("\n"); printf("這棵二叉樹(shù)的中序遍歷為:\n"); inorder(t); printf("\n"); printf("這棵二叉樹(shù)的后序遍歷為:\n"); houxu(t); printf("\n"); }14.某二叉鏈表(自己定義、建立),求其高度(深度)#include<stdio.h>typedefstructBitnode{intdata;structBitnode*lchild,*rchild;}Bilnode,*Bitree;Bitreecreate(){charch;Bitreet;ch=getchar();if(ch=='*')t=NULL;else{t=newBilnode; t->data=ch; t->lchild=create();t->rchild=create();}returnt;}intlength(Bitreet){ inth1,h2; if(t==NULL) return0;else { h1=length(t->lchild);h2=length(t->rchild); if(h1>h2) returnh1+1; else returnh2+1; }}voidmain(){ Bitreet; printf("輸入:"); t=create(); printf("這棵二叉樹(shù)的高度為:%d\n",length(t));}15.某二叉鏈表(自己定義、建立),求其葉子結(jié)點(diǎn)數(shù)#include<stdio.h>typedefstructBitnode{intdata;structBitnode*lchild,*rchild;}Bilnode,*Bitree;Bitreecreate(){charch;Bitreet;ch=getchar();if(ch=='*')t=NULL;else{t=newBilnode; t->data=ch; t->lchild=create();t->rchild=create();}returnt;}intcountzero(Bitreet){if(t==NULL) return0;else if(t->lchild==NULL&&t->rchild==NULL) return1;else returncountzero(t->lchild)+countzero(t->rchild);}voidmain(){ Bitreet; printf("輸入:"); t=create(); printf("這棵二叉樹(shù)葉子結(jié)點(diǎn)的個(gè)數(shù)為:%d\n",c

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論