知识大全 数据结构考研分类复习真题 第二章 答案[54]
Posted 空间
篇首语:不读书的人,思想就会停止。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据结构考研分类复习真题 第二章 答案[54]相关的知识,希望对你有一定的参考价值。
.[题目分析] 本题所用数据结构是静态双向链表 其结构定义为
typedef struct node char data[maxsize];∥用户姓名 maxsize是可能达到的用户名的最大长度 int Llink Rlink;∥前向 后向链 其值为乘客数组下标值 unode; unode user[max];∥max是可能达到的最多客户数
设av是可用数组空间的最小下标 当有客户要订票时 将其姓名写入该单元的data域 然后在静态链表中查找其插入位置 将该乘客姓名与链表中第一个乘客姓名比较 根据大于或小于第一个乘客姓名 而决定沿第一个乘客的右链或左链去继续查找 直到找到合适位置插入之
void Insert(unode user[max] int av)∥user是静态双向链表 表示飞机票订票系统 元素包含data Llink和Rlink三个域 结点按来客姓名排序 本算法处理任一乘客订票申请 scanf( %s s);∥s是字符数组 存放乘客姓名 strcopy(user[av] data s); p= ;∥p为工作指针(下标) if(strcmp(user[p] data s)< )∥沿右链查找 while (p!= && strcmp(user[p] data s)< )pre=p; p=user[p] Rlink; user[av] Rlink=p;user[av] Llink=pre;∥将新乘客链入表中 user[pre] Rlink=av; user[p] Llink=av; else∥沿左右链查找 while (p!= && strcmp(user[p] data s)> )pre=p; p=user[p] Llink; user[av] Rlink=pre;user[av] Llink=p;∥将新乘客链入表中 user[pre] Llink=av; user[p] Rlink=av; ∥算法结束
[算法讨论] 本算法只讨论了乘客订票情况 未考虑乘客退票 也未考虑从空开始建立链表 增加乘客时也未考虑姓名相同者(实际系统姓名不能做主关键字) 完整系统应有( )初始化 把整个数组空间初始化成双向静态链表 全部空间均是可利用空间 ( )申请空间 当有乘客购票时 要申请空间 直到无空间可用为止 ( )释放空间 当乘客退票时 将其空间收回 由于空间使用无优先级 故可将退票释放的空间作为下个可利用空间 链入可利用空间表中
cha138/Article/program/sjjg/201311/23314相关参考
第章 线性表答案 一.选择题 ABCADDDCBBCIIEBCBCCCAAADCBDCBBAD 二.判断题 ×√√××××××××××√×√ 部分答案解释如下 头结点并不仅起
.()la () &
()voidCreatOut()∥建立有n个单词的单向链表重复单词只在链表中保留一个最后输出频度最高的k个单词 LinkedListla; la=(LinkedList)malloc(size
.[题目分析]在递增有序的线性表中删除数值相同的元素要知道被删除元素结点的前驱结点 LinkedListDelSame(LinkedListla) ∥la是递增有序的单链表本算法去掉数值相同的
()要求编程实现带头结点的单链表的逆置首先建立一单链表然后逆置 typedef struct node int data;∥假定结点数据域为整型 struct&
()本题与上面两题类似要求结果指针为lc其核心语句段如下 pa=la>next;pb=hb>next; lc=(LinkedList)malloc(sizeof(LNode));
.设 q:=p^llink; 则 q^rlink:=p^rlink; p^rlink^llink:=q; p^llink:=q^llink; q^lli
.[题目分析] 知道双向循环链表中的一个结点与前驱交换涉及到四个结点(p结点前驱结点前驱的前驱结点后继结点)六条链 void Exchange(LinkedListp)∥p是
.[题目分析]顺序存储结构的线性表的逆置只需一个变量辅助空间算法核心是选择循环控制变量的初值和终值 void SeqInvert(ElemTypea[]intn)∥a是具有n个元素用一
.[题目分析]首先在双向链表中查找数据值为x的结点查到后将结点从链表上摘下然后再顺结点的前驱链查找该结点的位置 DLinkList locate(DLinkListLElemTypex