已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第第 2 章章 线性表线性表 2.1 2.1 描述以下三个概念的区别:头指针,头结点,首元结点(第一个元素结点) 。描述以下三个概念的区别:头指针,头结点,首元结点(第一个元素结点) 。 解:解:头指针是指向链表中第一个结点的指针。首元结点是指链表中存储第一个数据元素的结点。头结 点是在首元结点之前附设的一个结点,该结点不存储数据元素,其指针域指向首元结点,其作用主要是为 了方便对链表的操作。它可以对空表、非空表以及首元结点的操作进行统一处理。 2.2 2.2 填空题。填空题。 解:解:(1) 在顺序表中插入或删除一个元素,需要平均移动表中一半表中一半元素,具体移动的元素个数与元素元素 在表中的位置在表中的位置有关。 (2) 顺序表中逻辑上相邻的元素的物理位置必定必定紧邻。单链表中逻辑上相邻的元素的物理位置不一定不一定 紧邻。 (3) 在单链表中,除了首元结点外,任一结点的存储位置由其前驱结点的链域的值其前驱结点的链域的值指示。 (4) 在单链表中设置头结点的作用是插入和删除首元结点时不用进行特殊处理插入和删除首元结点时不用进行特殊处理。 2.3 2.3 在什么情况下用顺序表比链表好?在什么情况下用顺序表比链表好? 解:解:当线性表的数据元素在物理位置上是连续存储的时候,用顺序表比用链表好,其特点是可以进行随机 存取。 2.6 2.6 已知已知 L L 是无表头结点的单链表,且是无表头结点的单链表,且 P P 结点既不是首元结点,也不是尾元结点,试从下列提供的答案中结点既不是首元结点,也不是尾元结点,试从下列提供的答案中 选择合适的语句序列。选择合适的语句序列。 a a. . 在在 P P 结点后插入结点后插入 S S 结点的语句序列是结点的语句序列是_。 b. b. 在在 P P 结点前插入结点前插入 S S 结点的语句序列是结点的语句序列是_。 c. c. 在表首插入在表首插入 S S 结点的语句序列是结点的语句序列是_。 d. d. 在表尾插入在表尾插入 S S 结点的语句序列是结点的语句序列是_。 (1) P(1) P- -next=S;next=S; (2) P(2) P- -next=Pnext=P- -nextnext- -next;next; (3) P(3) P- -next=Snext=S- -next;next; (4) S(4) S- -next=Pnext=P- -next;next; (5) S(5) S- -next=L;next=L; (6) S(6) S- -next=NULL;next=NULL; (7) Q=P;(7) Q=P; (8) while(P(8) while(P- -next!=Q) P=Pnext!=Q) P=P- -next;next; (9) while(P(9) while(P- -next!=NULL) P=Pnext!=NULL) P=P- -next;next; (10) P=Q;(10) P=Q; (11) P=L;(11) P=L; (12) L=S;(12) L=S; (13) L=P;(13) L=P; 解:解:a. (4) (1) b. (7) (11) (8) (4) (1) c. (5) (12) d. (9) (1) (6) 2.7 2.7 已知已知 L L 是带表头结点的非空单链表,且是带表头结点的非空单链表,且 P P 结点既不是首元结点,也不是尾元结点,试从下列提供的答结点既不是首元结点,也不是尾元结点,试从下列提供的答 案中选择合适的语案中选择合适的语句序列。句序列。 a. a. 删除删除 P P 结点的直接后继结点的语句序列是结点的直接后继结点的语句序列是_。 b. b. 删除删除 P P 结点的直接前驱结点的语句序列是结点的直接前驱结点的语句序列是_。 c. c. 删除删除 P P 结点的语句序列是结点的语句序列是_。 d. d. 删除首元结点的语句序列是删除首元结点的语句序列是_。 e. e. 删除尾元结点的语句序列是删除尾元结点的语句序列是_。 (1) P=P(1) P=P- -next;next; (2) P(2) P- -next=P;next=P; (3) P(3) P- -nenext=Pxt=P- -nextnext- -next;next; (4) P=P(4) P=P- -nextnext- -next;next; (5) while(P!=NULL) P=P(5) while(P!=NULL) P=P- -next;next; (6) while(Q(6) while(Q- -next!=NULL) P=Q; Q=Qnext!=NULL) P=Q; Q=Q- -next; next; (7) while(P(7) while(P- -next!=Q) P=Pnext!=Q) P=P- -next;next; (8) while(P(8) while(P- -nextnext- -next!=Q) P=Pnext!=Q) P=P- -next;next; (9) while(P(9) while(P- -nextnext- -next!=NULL) P=Pnext!=NULL) P=P- -next;next; (10) Q=P;(10) Q=P; (11) Q=P(11) Q=P- -next;next; (1(12) P=L;2) P=L; (13) L=L(13) L=L- -next;next; (14) free(Q);(14) free(Q); 解:解:a. (11) (3) (14) b. (10) (12) (8) (3) (14) c. (10) (12) (7) (3) (14) d. (12) (11) (3) (14) e. (9) (11) (3) (14) 2.13 2.13 试写一算法在带头结点的单链表结构上实现线性表操作试写一算法在带头结点的单链表结构上实现线性表操作 Locate(L,x);Locate(L,x); 解:解: int LocateElem_L(LinkList LinkList p=L; while(p i+; if(!p) return 0; else return i; 2.23 2.23 设线性表设线性表 m aaaA, 21 , n bbbB, 21 ,试写一个按下列规则合并,试写一个按下列规则合并 A A,B B 为线性表为线性表 C C 的算法,即使得的算法,即使得 nmmm bbbabaC, 111 当当nm 时;时; mnnn aababaC, 111 当当nm 时。时。 线性表线性表 A A,B B 和和 C C 均以单链表作存储结构,且均以单链表作存储结构,且 C C 表利用表利用 A A 表和表和 B B 表中的结点空间构成。注意:单链表的长表中的结点空间构成。注意:单链表的长 度值度值 m m 和和 n n 均未显式存储。均未显式存储。 解:解: / 将合并后的结果放在 C 表中,并删除 B 表 Status ListMerge_L(LinkList pa=A-next; pb=B-next; C=A; while(pa qb=pb; pa=pa-next; pb=pb-next; qb-next=qa-next; qa-next=qb; if(!pa)qb-next=pb; pb=B; free(pb); return OK; 2.25 2.25 假设以两个元素依值递增有序排列的线性表假设以两个元素依值递增有序排列的线性表 A A 和和 B B 分别表示两个集合(即同一表中的元素值各不相分别表示两个集合(即同一表中的元素值各不相 同) ,现要求另辟空间构成一个线性表同) ,现要求另辟空间构成一个线性表 C C,其元素为,其元素为 A A 和和 B B 中元素的交集,且表中元素的交集,且表 C C 中的元素有依值递增有序中的元素有依值递增有序 排列。试对顺序表编写求排列。试对顺序表编写求 C C 的算法。的算法。 解:解: / 将 A、B 求交后的结果放在 C 表中 Status ListCross_Sq(SqList while(iB.elemj) j+; else ListInsert_Sq(C,k,A.elemi); i+; k+; return OK; 第3章 栈和队列栈和队列 3.2 3.2 简述栈和线性表的差别。简述栈和线性表的差别。 解:解:线性表是具有相同特性的数据元素的一个有限序列。栈是限定仅在表尾进行插入或删除操作的线 性表。 3.3 3.3 写出下列程序段的输出结果(栈的元素类型写出下列程序段的输出结果(栈的元素类型 SElemTypeSElemType 为为 charchar) 。) 。 void main()void main() Stack S;Stack S; char x,y;char x,y; InitStack(S);InitStack(S); x= x= c c; y= ; y= k k; ; Push(S,x);Push(S,x); Push(S, Push(S, a a);); Push(S,y);Push(S,y); Pop(S,x);Pop(S,x); Push(S, Push(S, t t);); Push(S,x);Push(S,x); Pop(S,x);Pop(S,x); Push(S, Push(S, s s);); while(!StackEmpty(S) Pop(S,y); printf(y); while(!StackEmpty(S) Pop(S,y); printf(y); printf(x);printf(x); 解:解:stack 3.11 简述队列和堆栈这两种数据类型的相同点和差异处。简述队列和堆栈这两种数据类型的相同点和差异处。 解:栈是一种运算受限的线性表,其限制是仅允许在表的一端进行插入和删除运算。解:栈是一种运算受限的线性表,其限制是仅允许在表的一端进行插入和删除运算。 队列也是一种运算受限的线性表,其限制是仅允许在表的一端进行插入,而在表的另一端进行删除。 3.12 写出以下程序段的输出结果(队列中的元素类型写出以下程序段的输出结果(队列中的元素类型 QElemType 为为 char) 。) 。 void main() Queue Q; InitQueue(Q); char x= e, y= c; EnQueue(Q, h); EnQueue(Q, r); EnQueue(Q, y); DeQueue(Q, x); EnQueue(Q, x); DeQueue(Q, x); EnQueue(Q, a); While(!QueueEmpty(Q) DeQueue(Q,y); coutn; coute; G.vernum=n; G.arcnum=e; / 建立顶点数组 for(k=0;kG.verticesk.data; G.verticesk.firstarc=NULL; / 建立邻接表 VertexType v1,v2; ArcNode *p,*q; for(k=0;kv1v2; i=LocateVex(G,v1); if(iG.vernum-1) return ERROR; j=LocateVex(G,v2); if(jG.vernum-1) return ERROR; if(i=j) return ERROR; p=new ArcNode; if(!p) return ERROR; p-adjvex=j; p-nextarc=NULL; q=G.verticesi.firstarc; if(!q) G.verticesi.firstarc=p; else while(q-nextarc) q=q-nextarc; / 指针定位于邻接表的尾结点 q-nextarc=p; return OK; int LocateVex(ALGraph while(G.verticesi.data!=v if(G.verticesi.data=v) return i;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中式烹调师-模拟练习题及答案
- 金义新区沿孝川路等五条道路综合管廊新建工程设计招标文件
- 项目三:老年服务伦理道德规范
- (辅导班)2026年新高三数学暑假讲义(基础班)第01讲 基本不等式及其应用(原卷版)
- 【山西省太原市英语初二下学期期末备考要点精析】
- 医学26年:滑车神经损害诊疗要点 查房课件
- 第七章 教育统计与教育测验
- 26年银发护理循序渐进原则课件
- 教育基础及其方法 2
- EPON电力用户终端操作手册
- 2026江西中江国际工程有限公司社会招聘4人备考题库含答案详解(考试直接用)
- 2026云南曲靖市沾益区高投物业服务有限公司物业工作人员招聘6人考试备考试题及答案解析
- 2026年高考语文复习:高频易错错别字
- 2025年事业单位卫生类医学影像专业知识考试试卷与解析
- SLT 336-2025水土保持工程全套表格
- 50吨汽车吊吊装专项施工方案
- 2026江西寻乌县公安局招聘留置看护队员3人备考题库及一套答案详解
- (2025年)电子信息工程专业能力测试试卷及答案
- 2025华电能源股份有限公司校园招聘笔试历年备考题库附带答案详解2套试卷
- 【《“养老服务助手”微信小程序的设计与实现》7600字】
- 生产现场文件制度
评论
0/150
提交评论