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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(02331数据结构课后练习题Word下载.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

02331数据结构课后练习题Word下载.docx

1、while (n = (s + 1) * (s + 1)s = s + 1;语句 “s = s + 1;”执行次,故该程序段得时间复杂度为O().13.x = 1; sum = 0; for (i = 0; x = x * i;sum = sum + x;语句 “x = x * i”与“sum = sum + x;”各执行n次,故该程序段得时间复杂度为O(n).14.for (i = 1; i+) if (3 * i =n) for (j = 3 * i; j+) x+; y = 3 * x + 2; 语句 “x+”与“y = 3 * x + 2;15.for (i = 1; for (j =

2、 1;= i; x = x + 1; 语句 “x = x + 1;16.sum = 0; i = 0; while (i = 100) sum = sum + i; i+; 语句 “sum = sum + i;”与“i+;”各执行100次,故该程序段得时间复杂度为O(1).17.x = 1; s = 0; for (i = 1; +x; s += x; for (j = 1; for (k = 1; k next = headC.head - next = NULL D.head = NULL4.在单循环链表中,p指向表任一结点,判断表不就是访问结束得条件就是 (B)A.p != NULL B

3、.p != head C.p - next != head D.p -= NULL5.在一个单链表中,已知q指向p所指向结点得前趋结点,若在p、q所指结点之间插入一个s所指向得新结点,则执行得操作就是 (A)A.q - next = s; s - next = p B.p - next = q C.s - next = p - next; p - next = s D.p - next = s - next = p6.在一个单链表中,若删除p指向结点得后继结点,则执行得操作就是 (A)A.q = p - next - free(q);B.p = p - q = p - p = q -C.q =

4、 p - p = p -D.p = p -7.在一个长度为n得顺序表中删除第i个元素,需要向前移动n - i个元素.8.在顺序表中插入或删除一个元素,需要平均移动表长得一半个元素,具体移动得元素个数与插入或删除得位置有关.9.顺序表中逻辑上相邻得元素在物理存储位置上一定相邻,链表结构中逻辑上相邻得元素在物理位置上不一定相邻.10.已知顺序表中一个元素得存储位置就是x,每个元素占c个字节,求其后继元素位置计算公式为x + c,而已知单链表中某一结点由p指向,求此后继结点存储地址得操作为p - next.11.在用p指针访问单链表时,判断不就是访问结束得条件就是p != NULL;在访问单循环链表

5、时,判断不就是访问表结束得条件就是p != head.12.已知p指向双向链表得中间某个结点,从给定得操作语句中选择合适得填空.(1)在p结点后插入s结点得语句序列就是I、G、A、D.(2)在p结点前插入s结点得语句序列就是C、N、H、B.(3)删除p结点得直接后继结点得语句序列就是J、Q、E、M.(4)删除p结点得直接前趋结点得语句序列就是K、P、F、M.(5)删除p结点得语句序列就是O、R、L.A.p - next = s B.p - prior = s C.s -D.s - prior = p E.p - next F.p - prior = p - prior - priorG.p -

6、 prior = s H.p - next = s I.s - nextJ.q = p - next K.q = p - prior L.free(p)M.free(q) N.s - prior O.p -P.p - next = p Q.p - prior = p R.p -13.下面就是一个在带头结点得单链表head中删除所有数据域值为x得结点得算法,但不完善,请在相应得地方填上适当得语句,使之成为完整得算法.void DeleX(LinkList head, DataType x) LinkNode *p, *q, *s; P = head; while (q != NULL) if (

7、q - data = x) s = q; q = q - free(s); p - next = q; else p = q;三、算法设计题14.设有两个顺序表A与B,且都递增有序。试写一算法,从A中删除与B中相同得那些元素(即计算A - B).SeqList Subtraction(SeqList A, SeqList B) int i, j, k = 0;/令匹配位置为0 A、Length; i+) for (j = k; B、Length; j+)/从比较匹配得位置开始查起 if (A、Datai = B、Dataj) k = j; /记录比较到得位置 for (j = i; A、Len

8、gth - 1; A、Dataj = A、Dataj + 1;/删除相同得元素 A、Length-; break; return A;15.已知head就是指向一个带头结点得单链表得头指针,p指向该链表得任一结点。试写一算法,将p所指向得结点与其后继结点交换位置.void Exchange(LinkList head, LinkNode *p) LinkNode *q, *s, *r; if (q != NULL)/判断所指结点就是否就是最后一个结点 if (p = head)/判断所指结点就是否就是头结点 head = head -/头结点指针域所指结点变成新得头结点 s = head -/

9、记录第2个结点 head - next = p;/新得头结点指针域指向原头结点/原头结点变成第1个结点后指针域指向第2个结点 else r = head; while (r -= p) r = r-/查找p指向结点直接前趋 r -/p指向结点直接前趋指针域指向p指向结点直接后继 next = q -/p指向结点指针域指向p指向结点直接后继得直接后继 q -/p指向结点直接后继指针域指向p else printf(“p指向得结点无后继节点!”)16.已知两条单链表A与B分别表示两个集合,其元素值递增有序。试写一算法,求A与B得交集C,要求C同样以元素值递增得单链表形式存储.LinkList In

10、tersection(LinkList A, LinkList B) LinkNode *p, *q, *r, *s; LinkList C = (LinkNode *) malloc(SizeOf(LinkNode); r = C; p = A; s = B; while (p != null & q != null) if (p - data data) p = p - else if (p - data data) q = q - else s = (LinkNode *) malloc(SizeOf(LinkNode); s - data = p - data; s - next =

11、NULL; r - r = s; p = p -17.设有一个带头结点得双向循环链表,head为链表得头指针。试写一算法,实现在值为x得结点之前插入一个值为y得结点.void Insert(DlinkList head, DataType x, DataType y) DlistNode *p, *s; s = (DlistNode *) malloc(SizeOf(DlistNode); data = y; p = head -= head & data != x) p = p -/查找结点值为x得结点 if (p = head) printf(“没有值为x得结点!”); else prio

12、r; p - prior = s;第3章 栈与队列1.栈得操作原则就是 (C)A.顺序进出 B.后进后出 C.后进先出 D.先进先出2.进栈序列为a,b,c,则通过入出栈操作可能得到得a,b,c得不同排列个数为 (B)A.4 B.5 C.6 D.73.按字母a,b,c,d,e顺序入栈,则出栈得输出序列不可能就是 (B)A.decba B.dceab C.abcde D.edcba4.判断一个顺序栈st(最多元素为StackSize)为栈满得条件表达式就是 (D)A.st、top != StackSize B.st、top != 0 C.st、top != -1 D.st、top = Stack

13、Size - 15.在向顺序栈中压入元素时 (C)A.先存入元素,后移动栈顶指针 B.谁先谁后无关紧要C.先移动栈顶指针,后压入元素 D.同时进行6.一个队列得入队序列就是1,3,5,7,9,则出队得输出序列只能就是 (B)A.9,7,5,3,1 B.1,3,5,7,9C.1,5,9,3,7 D.9,5,1,7,37.判断一个顺序队列sq(最多元素为QueueSize)为空队列得条件表达式为 (A)A.sq、rear = sq、front B.sq、rear = 0C.sq、front = QueueSize D.sq、rear = QueueSize + 18.判断一个循环队列cq(最多元素

14、为QueueSize)为满队列得条件表达式为 (C)A.cq、rear = cq、front B.cq、rear = QueueSizeC.(cq、rear + 1) % QueueSize = cq、front D.cq、rear % QueueSize + 1 = cq、front9.假设以S与X分别表示进栈与退栈操作,则对输入序列a,b,c,d,e进行一系列栈操作SSXSXSSXXX之后,得到得输出序列为b、c、e、d、a.10.假设S、datamaxsize为一个顺序存储得栈,变量top指示栈顶元素得位置。能做进栈操作得条件就是S、top 0) S2、datatop2 = x; els

15、e S1、datatop2 = x;DataType Delete(SeqStack *S1, SeqStack *S2) if (top1 = top2) printf(“Queue Empty”); if (top1 1) x = S1、datatop1; else x = S2、datatop1; top1+; return x;21.试设计一个算法,实现输入一字符串并检查字符串中就是否含有圆括号,当圆括号匹配时输出括号内得字符串,否则给出出错信息(提示:利用栈记录左括号出现后得字符).string Match() InitStack(S); 、/初始化栈 ch = getchar();

16、 /读取第一个字符 while (ch != n) /当前字符不为结束字符时,进入循环 if (ch = () /检测到左括号 push(S,ch); /将左括号压入栈中 ch = getchar(); /读取下一个字符 while (ch != n & ch != ) /字符不为结束字符与右括号时,进入循环 push(S,ch); /将字符压入栈中 ch = getchar(); /读取下一个字符 else if (ch =) /读取到得字符为右括号时,进入循环 while (!StackEmpty(S) & GetTop(S) != () /栈不空且栈顶元素不为左括号,进入循环 putchar(pop(S); /退栈并输出退栈得字符 if (StackEmpty)

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

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