知识大全 数据结构考研分类复习真题 第二章 答案[52]
Posted 结点
篇首语:学而不思则罔,思而不学则殆。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据结构考研分类复习真题 第二章 答案[52]相关的知识,希望对你有一定的参考价值。
.[题目分析] 双向循环链表自第二结点至表尾递增有序 要求将第一结点插入到链表中 使整个链表递增有序 由于已给条件(a <x<an) 故应先将第一结点从链表上摘下来 再将其插入到链表中相应位置 由于是双向链表 不必象单链表那样必须知道插入结点的前驱
void DInsert(DLinkedList dl)∥dl是无头结点的双向循环链表 自第二结点起递增有序 本算法将第一结点(a <x<an)插入到链表中 使整个链表递增有序 s=la;∥s暂存第一结点的指针 p=la >next;p >prior=la >prior;p >prior >next=p;∥将第一结点从链表上摘下 while(p >data<x)p=p >next;∥查插入位置 s >next=p;s >prior=p >prior;p >prior >next=s;p >prior=s;∥插入原第一结点s ∥算法结束
[算法讨论] 由于题目已给a <x<an 所以在查找第一结点插入位置时用的循环条件是p >data<x 即在a 和an间肯定能找到第一结点的插入位置 若无此条件 应先看第一结点数据域值x是否小于等于a 如是 则不作任何操作 否则 查找其插入位置 循环控制要至多查找完a 到an结点
if(p >data<x)p=p >next;else break;
cha138/Article/program/sjjg/201311/23319相关参考
.()la () &
.[题目分析]本题所用数据结构是静态双向链表其结构定义为 typedef struct node char data[maxsize];∥用户姓名maxsize是
()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