ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:51.82KB ,
资源ID:21821110      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21821110.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(西电 C++ 面向对象程序设计 软件技术基础 课后答案Word下载.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

西电 C++ 面向对象程序设计 软件技术基础 课后答案Word下载.docx

1、 q-next=p; p=q; q=r; head-next-next=NULL;四、5void mergelist(Linear_list*La,Linear_list*Lb,Linear_list*&Lc) Lc=(Linear_list*)malloc(sizeof(Linear_list); /产生C表的头结点 头插法 Lc- while(La-next!=NULL&=NULL) /La、Lb均非空 if(La-data La-next=La- insert(Lc,p); else p=Lb- Lb-next=Lb- p=La- insert(Lc,p); while(Lb- p=Lb

2、- Lb-/O(Length(La)+Length(Lb) void insert(Linear_list*Lc,Linear_list*p) p-next=Lc-/O(1)四、8void deleteFront(Link*s) Link*p=s,*q; while(p-=s)p=p-next=s; free(q);习题4 四、1int symmetry(linklist*head,stack*s)/具有头结点的单链表中存放有一个字符串,每个结点的数据域存放一个字符。/head为单链表的头指针,s为栈的结构体指针 int n=length(head)/2; linklist*p=head-ne

3、xt ; datatype x; for(int i=0;n;i+) push(s,p-data); p=p- if(length(head)%2=1) p=p- while(p!=NULL) x=pop(s) ; if (x=p-data ) p=p- else return 0; return 1;四、3void delete(Stack*s) Stack*temp; InitS(temp); while(!EmptyS(s) x=Pop(s); if(x!=m) Push(temp,x);Empty(temp) Push(s,Pop(temp);四、4int correct(char*e

4、xp) InitStack(S); int flag=1; i=0; while( expi!=0flag) if( expi=(|expi= ) Push( S,expi ); /遇左括号入栈) if( Pop(S)! ) flag=0; /遇右括号出栈,若栈顶不是左括号,则括号不配对 if(!Empty(S) flag=0; /若栈非空,则括号不配对 return flag;四、6循环队列的结构类型定义:const int m=5;typedef int datatype;typedef struct datatype sequm; int rear, quelen;qu;说明:队满条件:

5、sq-quelen=m 队空条件:quelen=0 (注意:不需要空出一个位置)入队:void enqueue(qu *sq, datatype x) if(sq-quelen=m) printf(queue is full); else sq-quelen+; sq-rear=(sq-rear+1)%m; /修改队尾指针sequsq-rear=x;出队:int dequeue(qu *sq , datatype&x)quelen=0) printf(queue is empty return 0;quelen-; x=sq-sequ(sq-rear-sq-quelen+m)%m;习题5 四、

6、3(1)顺序串int Equal(SeqString*S,SeqString*T)/比较顺序串S、T是否相等 i=0;while(S-chi = = T-chi )&( ilength ) &T-length ) i+;if ( i= =S-( i= =T-length ) return 1;else return 0;(2)链串int Equal(LinkString*S,LinkString*T)/比较链串S、T是否相等 p=S-next;q=T- while(S-data = T-data )&( p!=NULL ) &( q!=NULL ) q=q- if(p=NULL)&(q=NUL

7、L) return 1; else return 0;四、7void strDelete(char*S,int i,int m) char temp80;int k; k=i-1;=strlen(S) return; strncpy(temp,S,k); if(k+m=strlen(S) strcpy(temp+k,0 else strcpy(temp+k,S+k+m); strcpy(S,temp);或者:void strDelete(seqstring*S,int i,int m) /字符串中字符的序号从1开始,数组元素从下标0开始使用 char tempmaxsize;=S-len) s

8、trncpy(temp,S-str,i-1); /将S-str中第i个字符之前的i-1个字符复制到temp中 strcpy(temp+i-1,S-str+i+m-1);/将S-str中第i+m个字符开始的字符连接到temp之后 strcpy(S-str,temp); /将temp复制到S-str中 if(ilen) if(i+m-1len=S-len-m; /删除了字符串中间的部分字符 else S-len= i-1; /删除了字符串中从第i个字符开始的全部字符四、9void create(Spmatrix*a) scanf(%d,%d,%d,&a-m,&n,&t); for(ano=0;an

9、omini=p-Ai0; for(j=1;j+) if(p-Aijmini) p-Aij; /分别找出m行的最小值 for (j=0;maxj=p-A0j; for(i=1;Aijmaxj) p- /分别找出n列的最大值 for(j=0;mini=p-maxj) /若相等,则是一个马鞍点 cout,endl; /输出马鞍点 have=1; have) coutlchild); t2=swap(p-rchild); p-lchild=t2;rchild=t1; return p;12、已知结点序列21,18,37,42,65,24,19,26,45,25,画出相应的二叉排序树,并画出删除结点37

10、后的二叉排序树。有问题(1) (2)删除结点37后14 某密码电文由8个字母组成,每个字母在电文中的出现频率分别是7、19、2、6、32、3、21、10,试为这8个字母设计相应的哈夫曼编码。解:这8个字母可用A、B、C、D、E、F、G、H表示 组成的哈夫曼编码如下所示。 A:1001 B:101 C:0010 D:1000 E:11 F:0011 G:01 H:000 设计的哈夫曼树如下:哈夫曼树第七章 四、4、邻接表:1 2 6 null2 1 3 6 null3 2 4 null4 3 5 null5 4 7 null6 1 2 7 null 7 5 6 nullDFS:1 2 3 4 5

11、 7 6 BFS:1 2 6 3 7 4 5(不唯一)或1 6 2 7 3 5 45、按顺序输入后的邻接表: 1 2 6 4 3 5 null2 1 6 null3 1 4 5 null4 1 6 3 5 null5 6 4 1 3 null6 1 2 4 5 null6、从顶点4开始: 4 1 2 6 5 3 (有多种) BFS: 4 1 3 5 6 2 (不唯一) 7最小生成树: 7 6 1 5 2 4 3第八章 4、查找586 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 6 87 155 188 150 465 505 508 511 586 656 6

12、70 700 766 897 908 Low=1 high=16 mid=(1+16)/2=8 R8508 Low=9 high=12-1=11 mid=(9+11)/2=10 R10=586 586=R10 查找成功5线性探查 13HT12345678910111252261512043847099923725H(key)比较拉链52,2615,7043,8237,11给定关键字序列为(105,50,30,25,85,40,100,12,10,28,分别写出直接插入排序、希尔排序、起泡排序、直接选择排序、快速排序和归并排序的每一趟运行结果。直接插入排序:初始关键字序列:105,50,30,2

13、5,85,40,100,12,10,28第一趟直接插入排序:【50,105】第二趟直接插入排序:【30,50,105】第三趟直接插入排序:【25,30,50,105】第四趟直接插入排序:【25,30,50,85,105】第五趟直接插入排序:【25,30,40,50,85,105】第六趟直接插入排序:【25,30,40,50,85,100,105】第七趟直接插入排序:【12,25,30,40,50,85,100,105】第八趟直接插入排序:【10,12,25,30,40,50,85,100,105】第九趟直接插入排序:【10,12,25,28,30,40,50,85,100,105】希尔排序(增

14、量为5,3,1):第一趟希尔排序:40,50,12,10,28,105,100,30,25,85第二趟希尔排序:10,28,12,40,30,25,85,50,105,100第三趟希尔排序:10,12,25,28,30,40,50,85,100,105起泡排序:第一趟起泡排序:10,105,50,30,25,85,40,100,12,28第二趟起泡排序:10,12,105,50,30,25,85,40,100,28第三趟起泡排序:10,12,25,105,50,30,85,40,100,28第四趟起泡排序:10,12,25,28,105,50,30,85,40,100第五趟起泡排序:10,12

15、,25,28,30,105,50,85,40,100第六趟起泡排序:10,12,25,28,30,40,105,50,85,100第七趟起泡排序:10,12,25,28,30,40,50,105,85,100第八趟起泡排序:10,12,25,28,30,40,50,85,105,100第九趟起泡排序:直接选择排序:第一趟选择排序:10,50,30,25,85,40,100,12,105,28第二趟选择排序:10,12,30,25,85,40,100,50,105,28第三趟选择排序:10,12,25,30,85,40,100,50,105,28第四趟选择排序:10,12,25,28,85,40

16、,100,50,105,30第五趟选择排序:10,12,25,28,30,40,100,50,105,85第六趟选择排序:10,12,25,28,30,40,50,100,105,85第七趟选择排序:10,12,25,28,30,40,50,85,100,105(完成)第八趟选择排序:第九趟选择排序:快速排序:第一趟快速排序:(28,50,30,25,85,40,100,12,10),105第二趟快速排序:(10,12,25),28,(85,40,100,30,50),105第三趟快速排序:10,12,25,28,(50,40,30),85,(100),105第四趟快速排序:10,12,25,

17、28,(30,40),50,85,100,105第五趟快速排序:归并排序:第一趟归并排序:50,105,25,30,40,85,12,100,10,28第二趟归并排序:25,30,50,105,12,40,85,100,10,28第三趟归并排序:设待排序的关键字序列为(15, 21, 6, 30, 23, 6, 20, 17), 试分别写出使用以下排序方法每趟排序后的结果。并说明做了多少次比较。(1) 直接插入排序 (2) 希尔排序(增量为5,2,1) (3) 起泡排序 (4) 快速排序 (5) 直接选择排序 (6) 锦标赛排序 (7) 堆排序 (8) 二路归并排序 (9) 基数排序【解答】

18、(2) 希尔排序(增量为5,2,1) 15,21,6,30,23,6,20,17 6,20,6,30,23,15,21,17 6,15,6,17,21,20,23,30 6,6,15,17,20,21,23,30(3) 起泡排序15,21,6,30,23,6,20,1715,6,21,23,6,20,17,306,15,21,6,20,17,23,306,15,6,20,17,21,23,306,6,15,17,20,21,30,23(4) 快速排序 【6,6】15【30,23,21,20,17】 6,6, 15【17,23,21,20】30 6,6, 15,17【23,21,20】30 6,

19、6, 15,17,【20,21】23,30 6,6,15,17,20,21,30,23(5) 直接选择排序第一趟直接选择排序: 6,21,15,30,23,6,20,17第二趟直接选择排序: 6,6,15,30,23,21,20,17第三趟直接选择排序:第四趟直接选择排序: 6,6,15,17,23,21,20,30第五趟直接选择排序: 6,6,15,17,20,21,23,30第六趟直接选择排序:第七趟直接选择排序:(6) 锦标赛排序 15,21,6,30,23,6,20,17(此题答案的格式不对,我删去了)锦标赛排序的基本思想是:首先对n个待排序记录的关键字进行两两比较,从中选出n/2个较

20、小者再两两比较,直到选出关键字最小的记录为止,此为一趟排序。我们将一趟选出的关键字最小的记录称为“冠军”,而“亚军”是从与“冠军”比较失败的记录中找出,具体做法为:输出“冠军”后,将(冠军)叶子结点关键字改为最大,继续进行锦标赛排序,直到选出关键字次小的记录为止,如此循环直到输出全部有序序列。上面给出了排在前三个的记录,详细过程略。(7) 堆排序 初始堆: 6,17,6,21,23,15,20,30第一次调堆: 6,17,15, 21,23,30,20,【6】第二次调堆: 15,17,20,21,23,30,【6,6】第三次调堆: 17,21,20,30,23,【15,6,6】第四次调堆: 20,21,23,30,【17,15,6,6】第五次调堆: 21,30,23,【20,17,15,6,6】第六次调堆: 23,30,【21,20,17,15,6,6】第七次调堆: 30,【23,21,20,17,15,6,6】

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1