《数据结构》程序填空复习题_第1页
《数据结构》程序填空复习题_第2页
《数据结构》程序填空复习题_第3页
《数据结构》程序填空复习题_第4页
《数据结构》程序填空复习题_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《数据结构》序填空习题说:文中及的法非书全,些根据处情自看和业,黑为合习的目,红为另加题这空选是据个人经来定的不完代中电的卷师因一不有定考这题的法不放其内的习切!一、线性表1。设线性表为4以下程序用说明结构变量方法建立单向链表,并输出链表中各结点中的数据。#defineNULL0voidmain({NODEa,b,c,,*a。data=6;b.data=10;c。data=16;ddata=4;/*d是尾结点*head=(1;a.next=&bb.next=&c;c.next=&(2);/以上结束建表过程*/p=head;*p为工作指针,准备输出链表*do{printf(“%d\n(3)(4);}while());}答案:(1)&a(2next=NULL(3)p(4)p=p—>next(5)p!=NULL

以下函数在head为指针的具有结点的单向链表中删除第i个结点,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是组的个数a[0用存放线性表长,存待插入的元素值i存放插入的位,存放线性表长度{int[;int,,scanf(%%,&b,,&(;scanf(“%,&[ja[];for(j=n;();—)();(;();(〈[];j++)printf(“%,}答案:(1)j>=i(2)[]=aj]([i]=b)[

4。用头插法建立带头结点且有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一、栈以下函数为链栈进栈操作x是进栈的结点的数据域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二、队以下函数为链队的入队操,为要入队的结点的数据域的,、分是链队列的队头、队尾指针structnode{ElemTypedata;structnode*next;structnode*,rear;voidInQueue(ElemTypex{structnode;p=(structnode*)p-;p-___(;

___(1)_____;rear=

}答案:(1)((node))(2)rear->next=p(3)p2。以函数为链队列的出队操作链列带有头结点队点的数据域的值由返回,front、别是链队列的队头、队尾指针structnode{ElemTypedata;structnode*next;}structnode*,rear;ElemTypeOutQueue{ElemTypex;if(

)_____){printf(队列下溢错误!);exit;}else{

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

(2)_____;if(p->next==NULL)rear=front;free(p);_____;}}答案:(1)=rear)—>next(x)三、树1。以下程序是先序遍历二叉树的递归算法的程序,完成程序中空格部分(树结构中左、右指针域分别为left和,据域data为字符,指根结点voidPreorder(structBTreeNode*){if(!();(2;();}}答案:(1)printf((2(BT->left)(3)Preorder(BT〉right)以程序是中序历二叉树的递归算法的程序,完成程序中空格部分(树结构中左、右指针域分别为left和据域data为符型,指根结点。voidInorder(BTreeNode*BT){(!()(2()}}答案:)(2)printf(“%c,BT—〉data)(3)Inorder—>right)

3以程序是后序遍历二叉树的递归算法的程完程序中空格部分树构中左、右指针域分别为left和right数据域data为符型,指根结点voidPostorder(*BT){=NULL)()();()}}答案(1)(BT->left)))(3)(“%c,BT—〉data四、

图五、排1.以下冒泡法程序对存放在a[1],a[2],……,a[n]中的序列进行排序,完成程序中的空格部分,其中n是元个数,要求按升序排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)某冒中有现换已好序结循2。以下函数为直接选择排序算法,[1]的记录进行直接择排,

完成程序中的空格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)最后两句要填的概率会很高,要注意快速排序的考点很多,一般只会有三到四个空。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这构的根,是根,要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++]可保此,其件句掉第()空与()空有直的联,因此般况若求(3(4就会求(5)(6,(6)位填是其件七、查找1。以函数在[到[n-1]中,用折半查找算法查找关键字等的记录,查找成功返回该记录的下标,失败时返回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。。以函数在到[n—中用半查找的递归算法查找关字等k的记录,查找成功返回该记录的下标,失败时返回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。以函数是二叉排序树的查找算法,若二叉树为空,则返回根结点的指针,否则,返回值是指向树结点的结构指针找成功指向查到的树结点功指向为NULL)完成程序中的空格typedefstructBno

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论