《數(shù)據(jù)結(jié)構(gòu)》程序填空復(fù)習(xí)題_第1頁
《數(shù)據(jù)結(jié)構(gòu)》程序填空復(fù)習(xí)題_第2頁
《數(shù)據(jù)結(jié)構(gòu)》程序填空復(fù)習(xí)題_第3頁
《數(shù)據(jù)結(jié)構(gòu)》程序填空復(fù)習(xí)題_第4頁
《數(shù)據(jù)結(jié)構(gòu)》程序填空復(fù)習(xí)題_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

《數(shù)據(jù)結(jié)構(gòu)》序填空習(xí)題說:文中及的法非書全,些根據(jù)處情自看和業(yè),黑為合習(xí)的目,紅為另加題這空選是據(jù)個(gè)人經(jīng)來定的不完代中電的卷師因一不有定考這題的法不放其內(nèi)的習(xí)切!一、線性表1。設(shè)線性表為4以下程序用說明結(jié)構(gòu)變量方法建立單向鏈表,并輸出鏈表中各結(jié)點(diǎn)中的數(shù)據(jù)。#defineNULL0voidmain({NODEa,b,c,,*a。data=6;b.data=10;c。data=16;ddata=4;/*d是尾結(jié)點(diǎn)*head=(1;a.next=&bb.next=&c;c.next=&(2);/以上結(jié)束建表過程*/p=head;*p為工作指針,準(zhǔn)備輸出鏈表*do{printf(“%d\n(3)(4);}while());}答案:(1)&a(2next=NULL(3)p(4)p=p—>next(5)p!=NULL

以下函數(shù)在head為指針的具有結(jié)點(diǎn)的單向鏈表中刪除第i個(gè)結(jié)點(diǎn),structnode{intdata;structnode*next;typedefstructnodeintdelete(NODE*,inti){

*,*q;intj;q=head;j=0;while((?。╛__(1)_____){___()j++}return(0);p=(3)_____;)()return(;}答案)j<i—(2)q=q—next)q(4)—〉next(5)p將元素插入到線性表中的第位MAX是組的個(gè)數(shù)a[0用存放線性表長,存待插入的元素值i存放插入的位,存放線性表長度{int[;int,,scanf(%%,&b,,&(;scanf(“%,&[ja[];for(j=n;();—)();(;();(〈[];j++)printf(“%,}答案:(1)j>=i(2)[]=aj]([i]=b)[

4。用頭插法建立帶頭結(jié)點(diǎn)且有n個(gè)點(diǎn)的單向鏈表的算法){*head,,*;intip=(*malloc((NODE));(1);(;(3;(i=1;i<=n;i++){p=(NODE*malloc(()p-〉;()(else{(5);(}})}答案:)(〉next=NULL(3)q=p(4)—>next=NULL(5)p->next=q->next(6)q->next=p一、棧以下函數(shù)為鏈棧進(jìn)棧操作x是進(jìn)棧的結(jié)點(diǎn)的數(shù)據(jù)域top為頂指針structnode{ElemType;structnode*next;};struct*top;voidPush(ElemType){structnode*p;p=(structnode*)malloc(___(1)_____)p->data=x;

;}答案:(structnode)(2)p->next=top(3)top=p二、隊(duì)以下函數(shù)為鏈隊(duì)的入隊(duì)操,為要入隊(duì)的結(jié)點(diǎn)的數(shù)據(jù)域的,、分是鏈隊(duì)列的隊(duì)頭、隊(duì)尾指針structnode{ElemTypedata;structnode*next;structnode*,rear;voidInQueue(ElemTypex{structnode;p=(structnode*)p-;p-___(;

___(1)_____;rear=

}答案:(1)((node))(2)rear->next=p(3)p2。以函數(shù)為鏈隊(duì)列的出隊(duì)操作鏈列帶有頭結(jié)點(diǎn)隊(duì)點(diǎn)的數(shù)據(jù)域的值由返回,front、別是鏈隊(duì)列的隊(duì)頭、隊(duì)尾指針structnode{ElemTypedata;structnode*next;}structnode*,rear;ElemTypeOutQueue{ElemTypex;if(

)_____){printf(隊(duì)列下溢錯(cuò)誤?。?exit;}else{

structnode*p=frontx=p->data;front—〉next=

(2)_____;if(p->next==NULL)rear=front;free(p);_____;}}答案:(1)=rear)—>next(x)三、樹1。以下程序是先序遍歷二叉樹的遞歸算法的程序,完成程序中空格部分(樹結(jié)構(gòu)中左、右指針域分別為left和,據(jù)域data為字符,指根結(jié)點(diǎn)voidPreorder(structBTreeNode*){if(?。ǎ?(2;();}}答案:(1)printf((2(BT->left)(3)Preorder(BT〉right)以程序是中序歷二叉樹的遞歸算法的程序,完成程序中空格部分(樹結(jié)構(gòu)中左、右指針域分別為left和據(jù)域data為符型,指根結(jié)點(diǎn)。voidInorder(BTreeNode*BT){(?。ǎ?2()}}答案:)(2)printf(“%c,BT—〉data)(3)Inorder—>right)

3以程序是后序遍歷二叉樹的遞歸算法的程完程序中空格部分樹構(gòu)中左、右指針域分別為left和right數(shù)據(jù)域data為符型,指根結(jié)點(diǎn)voidPostorder(*BT){=NULL)()();()}}答案(1)(BT->left)))(3)(“%c,BT—〉data四、

圖五、排1.以下冒泡法程序?qū)Υ娣旁赼[1],a[2],……,a[n]中的序列進(jìn)行排序,完成程序中的空格部分,其中n是元個(gè)數(shù),要求按升序排voidbsort(NODEa[intn){temp;inti,j,flag;for(1);j++;for(i=1;(2)(a。key〉a[i+1]。key){flag=1;temp=a[i];(3);(4);}if(flag=)break;}}程序中flag的功能是()答案:(1)j〈=n(2—j(3)a[i]=a[i+1](4)a]=temp(5)某冒中有現(xiàn)換已好序結(jié)循2。以下函數(shù)為直接選擇排序算法,[1]的記錄進(jìn)行直接擇排,

完成程序中的空格typedefstruct{int;……};voidselsort(NODE,){int,;;(〈___(1)_____;){k=i;(=([〈)__((!=k){[]___(;____5)____;}}}答案)—1(2)n(3)(4)[])a[k]=temp3。直接插入排序算法Voiddisort([{intI,j;;for(i=1;;{temp=a[();〉。[。key){();();}(4;

}}答案:(1)—1([](3)—(4)[]快排序voidquicksort(a[start,intend){int,mid;(〉=end)return;();();]while(()){whilei<j)&&a。)();{

(();();}while(i<j&a?!矗ǎ?;({();(10)}}ai]=mid;(;}答案:(1)i=start(2)(3)i<j(—

也能此語寫,填其件的a[jkey>mid.key

(5)i〈j(6)[i]=a[j](7)i++(8)i++也能此語寫,填其件中。key)[j=a[]()()quicksort(,start,i-1)(12)quicksort(a,i+1,end)最后兩句要填的概率會很高,要注意快速排序的考點(diǎn)很多,一般只會有三到四個(gè)空。5。直接選擇排序voidselsort(NODEa[],intn){int,,(;{(;((2);j<=n;j++)。。key)

(3{}

())(;();(;}}答案:(1)k=i(2)i+1(3)(4)(5)temp=a[i]([i]=a[k(7)a[k]=temp前句為要6。堆排序中的篩選算法voidheapshift(NODE,n){;;temp=a[i();

while〈){(〈&〉)();if(temp。key>a[){(3;();(5;}else;}(;}答案:(1)j=2*i(2)j++(3)[i]=a[j](4)i=j)(6)[i]=temp這構(gòu)的根,是根,要if句的a[j]。].key改為,再將二if語句的>改<即堆序voidheapsort(a[n){inti(1);i〉;—();for(i=n;〉;——{temp=a[;(();();}}答案:(1)n/2(2)(a,i,n))]=a[i]([i]=temp(5)heapshift(a,1,i—1)

兩有序序列的歸并voidmerge[,s,intm,int]{inti=s,j=m+1,while())&(())if(a[i].key<=a[。();else();〉)while)(5);ElseWhile()(6;}答案(1)i<=m(2)j<=n(3)order[k++]=a[]可保此,其件句掉(4)order[k++]=a[j++]可留句將條語去掉(5)Order[k++]=a[j++]可保此,其件句掉(6)]=ai++]可保此,其件句掉第()空與()空有直的聯(lián),因此般況若求(3(4就會求(5)(6,(6)位填是其件七、查找1。以函數(shù)在[到[n-1]中,用折半查找算法查找關(guān)鍵字等的記錄,查找成功返回該記錄的下標(biāo),失敗時(shí)返回1,完成程序中的空格typedefstruct{intkey;……}NODE;intBinary_Search(NODEa[],intn,intk){intlow,mid,high;low=0;high=n1;while({

___())mid=if(a].key==k)return

(;

elseif(

___(3)_____)else

low=mid+1__(4);}___(_____}答案:(1)low<=high(2)mid(3)a[mid].keyk;))return-1;此折查的遞算2。。以函數(shù)在到[n—中用半查找的遞歸算法查找關(guān)字等k的記錄,查找成功返回該記錄的下標(biāo),失敗時(shí)返回1,完成程序中的空格intBinary_Search(NODE[],int,,){if(low<=high){intmid=()()return

;elseif(

(3)

)();else(;}elsereturn—}答案(1)([mid]。(3)a[mid]。key〈k(a[low,mid—1,k)(5)return(a[,high,k3。以函數(shù)是二叉排序樹的查找算法,若二叉樹為空,則返回根結(jié)點(diǎn)的指針,否則,返回值是指向樹結(jié)點(diǎn)的結(jié)構(gòu)指針找成功指向查到的樹結(jié)點(diǎn)功指向?yàn)镹ULL)完成程序中的空格typedefstructBno

溫馨提示

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

最新文檔

評論

0/150

提交評論