版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《数据结构》序填空习题说:文中及的法非书全,些根据处情自看和业,黑为合习的目,红为另加题这空选是据个人经来定的不完代中电的卷师因一不有定考这题的法不放其内的习切!一、线性表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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四川省事业单位联考招聘高频重点提升(共500题)附带答案详解
- 哈尔滨师范大学2025年上半年公开招聘人员历年高频重点提升(共500题)附带答案详解
- 2024社保合规审计与监督合同
- 南陵县镇卫生院2025年招聘医技人员历年高频重点提升(共500题)附带答案详解
- 华北电力大学非事业编制人员招考聘用高频重点提升(共500题)附带答案详解
- 北京科技大学第二批非教学科研岗位招考聘用高频重点提升(共500题)附带答案详解
- 北京市昌平区2025年下半年招考事业单位工作人员高频重点提升(共500题)附带答案详解
- 2024运营管理突发事件应急预案与处理合同范本3篇
- 内蒙古鄂尔多斯市人民政府办公室所属事业单位选调7人高频重点提升(共500题)附带答案详解
- 内蒙古赤峰市敖汉旗事业单位公开招聘51人高频重点提升(共500题)附带答案详解
- 医院感染监测清单
- 社区老年人项目计划书
- 《1.我又长大了一岁》教学课件∣泰山版
- 断裂力学-1绪论课件
- 深基坑工程验收表
- 医学交流课件:RCT的基本概念及原则(PPT 37页)
- SLZ 549-2012 用水审计技术导则(试行)
- qes三体系审核培训ppt课件
- CASS文字编缉
- JJF 1406-2013 地面激光扫描仪校准规范(原版-高清)
- 转炉系统机械设备概述
评论
0/150
提交评论