知识大全 数据结构考研分类复习真题 第二章 答案[53]
Posted 元素
篇首语:知之者不如好之者,好之者不如乐之者。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据结构考研分类复习真题 第二章 答案[53]相关的知识,希望对你有一定的参考价值。
.[题目分析] 在顺序存储的线性表上删除元素 通常要涉及到一系列元素的移动(删第i个元素 第i+ 至第n个元素要依次前移) 本题要求删除线性表中所有值为item的数据元素 并未要求元素间的相对位置不变 因此可以考虑设头尾两个指针(i= j=n) 从两端向中间移动 凡遇到值item的数据元素时 直接将右端元素左移至值为item的数据元素位置
void Delete(ElemType A[ ] int n)∥A是有n个元素的一维数组 本算法删除A中所有值为item的元素 i= ;j=n;∥设置数组低 高端指针(下标) while(i<j) while(i<j && A[i]!=item)i++;∥若值不为item 左移指针 if(i<j)while(i<j && A[j]==item)j ;∥若右端元素值为item 指针左移 if(i<j)A[i++]=A[j ];
[算法讨论] 因元素只扫描一趟 算法时间复杂度为O(n) 删除元素未使用其它辅助空间 最后线性表中的元素个数是j 若题目要求元素间相对顺序不变 请参见本章三 填空题 的算法
cha138/Article/program/sjjg/201311/23320相关参考
.()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