知识大全 数据结构考研分类复习真题 第二章 答案[46]
Posted 结点
篇首语:知识象烛光,能照亮一个人,也能照亮无数人。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据结构考研分类复习真题 第二章 答案[46]相关的知识,希望对你有一定的参考价值。
.[题目分析] 在递增有序的线性表中 删除数值相同的元素 要知道被删除元素结点的前驱结点
LinkedList DelSame(LinkedList la) ∥la是递增有序的单链表 本算法去掉数值相同的元素 使表中不再有重复的元素 pre=la >next;∥pre是p所指向的前驱结点的指针 p=pre >next;∥p是工作指针 设链表中至少有一个结点 while(p!=null) if(p >data==pre >data)∥处理相同元素值的结点 u=p;p=p >next;free(u);∥释放相同元素值的结点 else pre >next=p;pre=p;p=p >next;∥处理前驱 后继元素值不同 pre >next=p;∥置链表尾 ∥DelSame
[算法讨论] 算法中假设链表至少有一个结点 即初始时pre不为空 否则p >next无意义 算法中最后pre >next=p是必须的 因为可能链表最后有数据域值相同的结点 这些结点均被删除 指针后移使p=null而退出while循环 所以应有pre >next=p使链表有尾 若链表尾部没数据域相同的结点 pre和p为前驱和后继 pre >next=p也是对的
顺便提及 题目应叙述为非递减有序 因为 递增 是说明各结点数据域不同 一个值比一个值大 不会存在相同值元素
cha138/Article/program/sjjg/201311/23328相关参考
知识大全 数据结构考研分类复习真题 第五章 数组和广义表[46]
.已知两个定长数组它们分别存放两个非降序有序序列请编写程序把第二个数组序列中的数逐个插入到前一个数组序列中完成后两个数组中的数分别有序(非降序)并且第一数组中所有的数都不大于第二个数组中的任意一个
[题目分析]本题中数组A的相邻两段分别有序要求将两段合并为一段有序由于要求附加空间为O()所以将前段最后一个元素与后段第一个元素比较若正序则算法结束若逆序则交换并将前段的最后一个元素插入到后段中使
第章 线性表答案 一.选择题 ABCADDDCBBCIIEBCBCCCAAADCBDCBBAD 二.判断题 ×√√××××××××××√×√ 部分答案解释如下 头结点并不仅起
.()la () &
.[题目分析]本题所用数据结构是静态双向链表其结构定义为 typedef struct node char data[maxsize];∥用户姓名maxsize是
()voidCreatOut()∥建立有n个单词的单向链表重复单词只在链表中保留一个最后输出频度最高的k个单词 LinkedListla; la=(LinkedList)malloc(size
()要求编程实现带头结点的单链表的逆置首先建立一单链表然后逆置 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是