知识大全 数据结构考研分类复习真题 第二章 答案[36]
Posted 结点
篇首语:人的天职在勇于探索真理。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据结构考研分类复习真题 第二章 答案[36]相关的知识,希望对你有一定的参考价值。
.[题目分析] 将具有两个链域的单循环链表 改造成双向循环链表 关键是控制给每个结点均置上指向前驱的指针 而且每个结点的前驱指针置且仅置一次
void StoDouble(LinkedList la)∥la是结点含有pre data link三个域的单循环链表 其中data为数据域 pre为空指针域 link是指向后继的指针域 本算法将其改造成双向循环链表 while(la >link >pre==null) la >link >pre=la;∥将结点la后继的pre指针指向la la=la >link;∥la指针后移 ∥算法结束
[算法讨论] 算法中没有设置变量记住单循环链表的起始结点 至少省去了一个指针变量 当算法结束时 la恢复到指向刚开始操作的结点 这是本算法的优点所在
.[题目分析] 求两个集合A和B的差集A B 即在A中删除A和B中共有的元素 由于集合用单链表存储 问题变成删除链表中的结点问题 因此 要记住被删除结点的前驱 以便顺利删除被删结点 两链表均从第一元素结点开始 直到其中一个链表到尾为止
void Difference(LinkedList A B *n)∥A和B均是带头结点的递增有序的单链表 分别存储了一个集合 本算法求两集合的差集 存储于单链表A中 *n是结果集合中元素个数 调用时为 p=A >next;∥p和q分别是链表A和B的工作指针 q=B >next; pre=A;∥pre为A中p所指结点的前驱结点的指针 while(p!=null && q!=null) if(p >data<q >data)pre=p;p=p >next;*n++;∥A链表中当前结点指针后移 else if(p >data>q >data)q=q >next;∥B链表中当前结点指针后移 else pre >next=p >next;∥处理A B中元素值相同的结点 应删除 u=p; p=p >next; free(u);∥删除结点
cha138/Article/program/sjjg/201311/23340相关参考
int Partition(RecTypeR[]intlinth) //一趟快速排序算法枢轴记录到位并返回其所在位置 inti=l;j=h;R[]=R[i];x=R[i]key;
.[题目分析]本题的一种算法前面已讨论(请参见本章三填空题)这里给出另一中解法分析数的填法是按从右上到左下的蛇形沿平行于副对角线的各条对角线上将自然数从小到大填写当从右上到左下时坐标i增加坐标j减
知识大全 数据结构考研分类复习真题 第六章 答案 (五)[36]
()略()根据中序和后序序列建立二叉树的递归算法见上面第题非递归算法见第题 [题目分析]采用后序非递归遍历二叉树栈中保留从根结点到当前结点的路径上的所有结点 voidPrintPath(BiT
第章 线性表答案 一.选择题 ABCADDDCBBCIIEBCBCCCAAADCBDCBBAD 二.判断题 ×√√××××××××××√×√ 部分答案解释如下 头结点并不仅起
.()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));