《数据结构实用教程》复习提纲
数据结构复习提纲

程序设计题的可能题目 1、线性链表的插入删除的基本做作; 2、数制转换;3、循环队列的基本操作; 4、KMP算法求next值和nextval值; 5、折半查找;6、冒泡排序;7、快速排序 8、简单选择排序。
第七章:图的定义和术语,图的遍历,最小生成树,拓扑排序, 关键路径,最短路径 第九章:简单顺序查找,折半查找,索引查找,平衡二叉树, 哈希表 第十章:插入,交换,选择类排序
应用题(操作题)的可能题目 1、哈夫曼树的建立以及哈夫曼编码; 2、最小生成树,3、拓扑排序,4、最短路径 5、折半查找,6、平衡二叉树的建立和调整, 7、哈希表的建立和解决冲突, 8、希尔排序,9、快速排序,10、堆排序
天 道 酬 勤 !
数据结构 复习提纲
★★★★★★★★★★★★
山轻工
信计10级 数据结构 专用版!
★★内部绝密文档★★
★★★★★★★★★★★★
考试题型
1、选择题(60分,20道*3),考查基本概念,基本原理;
2、应用题(操作题目)(30分,2~4道),考查一些常用 基本算法的具体实现;
3、程序设计题目(10分,10个空*1),考查常用重要算 法的程序的编写和改进;
各章重点内容
第一章:基本概念和术语,时间复杂度; 第二章:线性表的基本概念和存储表示,线性链表的插入删除 操作,循环链表的各种操作; 第三章:顺序栈的表示和实现,应用(数制转换),循环队 列的表示和实现; 第四章:串的基本概念,表示和实现(几种表示方法), KMP算法;
重点:考查唯一确定二叉树,先根、中根、后根。深度(3种) 和广度搜索 第六章:二叉树的定义,性质,二叉树的两种遍历算法,最优 二叉树(哈夫曼树)(写出哈夫曼编码及权值)
(完整word版)数据结构复习提纲

数据结构复习提纲复习内容:基本概念掌握:数据结构,逻辑结构,存储结构;数据类型;算法;T(n),S(n)的理解。
要学习的数据结构定义形式:n(n〉=0)个数据元素的有限集合.将约束:1、数据元素本身.2、数据元素之间的关系。
3、操作子集。
大多有两种存储(表示、实现)方式:1、顺序存储。
2、链式存储.一、线性结构:1、线性表:n(n〉=0)个相同属性的数据元素的有限序列。
12种基本操作.顺序表:9种基本操作算法实现.单链表:11种基本操作算法实现。
(重点:插入、删除)顺序表与单链表之时间性能、空间性能比较.循环链表:类型定义与单链表同。
算法实现只体现在循环终止的条件不同。
双向链表:重点插入、删除算法。
2、操作受限的线性表有:栈、队列。
栈:顺序栈;链栈(注意结点的指针域指向)。
(取栈顶元素、入栈、出栈)队列:循环队列(三个问题的提出及解决);链队列(注意头结点的作用).(取队头元素、入队、出队。
链队列中最后一个元素出队)3、数据元素受限的线性表有:串、数组、广义表。
串:定长顺序存储;堆分配存储.块链存储(操作不方便)数组:顺序存储。
特殊矩阵的压缩存储;稀疏矩阵(三元组表示、十字链表)广义表:长度、深度.取表头(可以是原子也可以是子表);取表尾(肯定是子表)。
链式存储。
二、树型结构:1、树:n(n>=0)个数据元素的有限集合.这些数据元素具有以下关系:……。
(另有递归定义。
)术语;存储(双亲表示、孩子表示、孩子双亲表示、孩子兄弟表示)。
2、二叉树:n(n〉=0)个数据元素的有限集合。
这些数据元素具有以下关系:……。
(另有递归定义)5个性质(理解、证明;拓展)。
遍历二叉树(定义、序列给出、递归算法、非递归算法);遍历二叉树应用:表达式之前序表达式、后序表达式、中序表达式转换。
线索二叉树(中序线索二叉树)。
树森林与二叉树的转换。
树与森林的遍历.赫夫曼树及其应用:定义、构造、赫夫曼编码。
三、图形结构:n(n〉=0)个数据元素的有限集合。
数据结构复习资料复习提纲知识要点归纳

数据结构复习资料复习提纲知识要点归纳数据结构复习资料:复习提纲知识要点归纳一、数据结构概述1. 数据结构的定义和作用2. 常见的数据结构类型3. 数据结构与算法的关系二、线性结构1. 数组的概念及其特点2. 链表的概念及其分类3. 栈的定义和基本操作4. 队列的定义和基本操作三、树结构1. 树的基本概念及定义2. 二叉树的性质和遍历方式3. 平衡二叉树的概念及应用4. 堆的定义和基本操作四、图结构1. 图的基本概念及表示方法2. 图的遍历算法:深度优先搜索和广度优先搜索3. 最短路径算法及其应用4. 最小生成树算法及其应用五、查找与排序1. 查找算法的分类及其特点2. 顺序查找和二分查找算法3. 哈希查找算法及其应用4. 常见的排序算法:冒泡排序、插入排序、选择排序、归并排序、快速排序六、高级数据结构1. 图的高级算法:拓扑排序和关键路径2. 并查集的定义和操作3. 线段树的概念及其应用4. Trie树的概念及其应用七、应用案例1. 使用数据结构解决实际问题的案例介绍2. 如何选择适合的数据结构和算法八、复杂度分析1. 时间复杂度和空间复杂度的定义2. 如何进行复杂度分析3. 常见算法的复杂度比较九、常见问题及解决方法1. 数据结构相关的常见问题解答2. 如何优化算法的性能十、总结与展望1. 数据结构学习的重要性和难点2. 对未来数据结构的发展趋势的展望以上是数据结构复习资料的复习提纲知识要点归纳。
希望能够帮助你进行复习和回顾,加深对数据结构的理解和掌握。
在学习过程中,要注重理论与实践相结合,多进行编程练习和实际应用,提高数据结构的实际运用能力。
祝你复习顺利,取得好成绩!。
数据结构(复习提纲)【整理】

2010年复习提纲第一章数据、数据结构的概念;基本逻辑结构的种类;集合线性树形图状基本存储方式的种类;顺序链式散列索引算法、算法的时间复杂度以及其计算。
算法的五大特性:输入输出确定性有穷性有效性时间复杂度的计算:忽略常数与中间变量,循环套循环用乘法第二章线性表的概念;顺序存储和链接存储的线性表的数据结构、特性;顺序存储的特性:查找方便,不易扩充链接存储的特性:插入删除方便顺序存储和链接存储的线性表的基本算法:创建、插入、查找、删除等;链表的其他形式(带表头、循环、双向、双向循环等)的概念及基本算法(与一般链表的不同处)。
带表头:便于其后结点执行标准化操作循环:首尾相接双向:既可以查找前继又可以查找后继双向循环:结合以上两点链表逆转;第二章相关算法列举如下1.。
顺序线性表的插入Int sq_insert(int list[],int *p_n,int i,int x) { Int j;If(i<0||i>*p_n) return(1);If(*p_n==MAXSIZE) return(2);For(j=*p_n;j>I;j--)List[j]=list[j-1];List[i]=x;(*p_n)++;Return(0);} 2.顺序线性表的删除Int sq_delete(int list[],int *p_n,int i) {Int j;If(i<0||i>=*p_n) return(1);For(j=i+1;j<*p_n;j++)List[j-1]=list[j];(*p_n)--;Return(0);}3.链式线性表的创建NODE *create_link_list(int n){ int i;NODE *p,*q;NODE *p_head;if(n==0) return(NULL);p_head=new(NODE);p_head->data=-1;p=p_head;for(i=1;i<=n;i++){printf("请输入第%d个节点的值\n",i);q=new(NODE);scanf("%d",&(q->data));p->link=q;p=q;}q->link=NULL;return(p_head);/*返回的是假头*/ ※4.链式线性表的插入(i之后)Int insert(NODE* *p_head,int i,int a) { int n=0;NODE *p,*q,*r;p=*p_head;if(i<1) return(0);while((p!=NULL)&&(n<i)){If(p->data!=-1) n++;q=p;p=p->link;}r=new(NODE);r->data=a;r->link=q->link;q->link=r;}※5.链式线性表的删除int del(NODE* *p_head,int I) { NODE *p,*q;int n=0;p=*p_head;if(i<1) return(0);while((p!=NULL)&&(n<i)){If(p->data!=-1) n++;q=p;p=p->link;}if(p==NULL) return(0);q->link=p->link;delete(p);return(1);} 6.单链表的逆置NODE * reverse(NODE *head) {NODE *p,*q;P=head->next;Head->next=NULL;While(p){Q=p->next;p->next=head->next;head->next=p;p=q;}return(head);}7.试写一高效的算法,删除表中所有大于mink且小于maxk的元素Void Delete_between(int a[],int mink,int maxk){p=L;while(p->next->data<=mink) p=p->next;(本循环结束时p是最后一个不大于mink的元素)if(p->next)(如果还有比mink更大的元素){q=p->next;while(q->data<maxk) q=q->next;(本循环结束时q 是第一个不小于maxk 的元素)p->next=q;}}第三章栈与队列的概念;栈:只允许在一端进行插入和删除的线性表队列:只允许在一端进行插入,且只允许在另一端进行删除的线性表顺序栈和链栈的数据结构与基本算法;顺序队列(尤其是循环队列)和链队列的数据结构与基本算法;栈的应用算法;如何判断顺序栈的空与满、如何判断循环队列的空与满;判断顺序栈的空与满:若top的初始值是-1 则判空条件是if(top==-1) 判满条件是if(top==MAXN)若top的初始值是0 则判空条件是if(top==0) 判满条件是if(top==MAXN-1)判断循环队列的空与满{Head=0,tail=0;判断循环队列的空与满的条件都是if(head==tail)}中缀表达式与后缀表达式规则以及两者间的转换。
数据结构复习提纲

复习提纲:第一章:1.数据结构的基本概念;2.数据结构的4类基本结构及其特性;3.存储结构的分类及特点;4.算法的时间复杂度计算;第二章:1.线性表的基本概念;2.线性表的顺序存储结构的特点和插入删除算法;3.顺序存储结构的应用;4.单循环链表的存储结构特点,链表空的判断方法、插入、删除结点算法实现,报数游戏算法实现;5.双链表的存储特点,插入、删除结点算法实现。
第三章:1.栈的特点、对同一序列根据栈的特点进行不同入栈、出栈操作所得结果的判断;栈的实现的相关操作;2.顺序栈的4各要素和相关操作关键语句;链栈的4个要素和相关操作关键语句;3.了解队列的特点和可执行的基本操作,并能做相关判断;4.顺序循环队列的队空、队满判断条件,入队、出队操作的相关关键语句;5.顺序循环队列中对同一序列根据队列进行不同的入队、出队操作后队头和队尾指针的变化判断。
第四章:1.串的定义、串长的定义和计算、子串个数计算(注意区分:子串与非空且不同于S本身的子串);2.串的模式匹配(区分BF算法和KMP算法),掌握使用KMP算法计算next数组的值,并且要求掌握匹配过程(BF和KMP的匹配过程不同!)。
前三章程序重点掌握作业四、作业五、作业六、作业八、作业九第五章:1.特殊矩阵的压缩存储地址计算,稀疏矩阵的压缩存储结构图。
2.广义表的定义、区分原子和子表,求表头和表尾,深度和层次计算,存储结构图绘制;3.提供一广义表,写出通过head()和tail()操作求出某个原子的表达式。
4.注意:取表头时即广义表的第一个元素,外面不再加括号;而取表尾时,要将除表头元素外的其他元素一起用圆括号括起来,即将原广义表去掉表头;第六章:1.树的定义和相关基本术语;2.树的表示和各种存储结构的表示;3.二叉树的定义和结点形态;4.熟练使用二叉树的性质进行相关计算;5.掌握提供边集画树及树的存储结构图并将树转换为二叉树;6.根据后序遍历和中序遍历的序列画出二叉树直观图,并给出其先序遍历的序列,画出线索二叉树存储结构图;7.根据二叉树的顺序存储结构图,画出二叉树及二叉链存储结构图,并给出该二叉树转换后的森林。
数据结构复习提纲

数据结构复习提纲一、线性表线性表是最基本的数据结构之一,它是具有相同数据类型的 n 个数据元素的有限序列。
1、顺序表定义和特点:顺序表是用一组地址连续的存储单元依次存储线性表的数据元素。
存储结构:通常使用数组来实现。
基本操作:插入、删除、查找、遍历等。
时间复杂度分析:插入和删除操作在平均情况下的时间复杂度为O(n),查找和遍历操作的时间复杂度为 O(n)。
2、链表定义和特点:链表是通过指针将各个数据元素链接起来的一种存储结构。
单链表:每个节点包含数据域和指针域,指针域指向链表的下一个节点。
双链表:节点包含两个指针域,分别指向前驱节点和后继节点。
循环链表:尾节点的指针指向头节点,形成一个环形结构。
基本操作:插入、删除、查找等。
时间复杂度分析:插入和删除操作在平均情况下的时间复杂度为O(1),查找操作的时间复杂度为 O(n)。
二、栈和队列1、栈定义和特点:栈是一种限制在一端进行插入和删除操作的线性表,遵循“后进先出”的原则。
存储结构:顺序栈和链栈。
基本操作:入栈、出栈、栈顶元素获取等。
应用:表达式求值、括号匹配、函数调用等。
2、队列定义和特点:队列是一种在一端进行插入操作,在另一端进行删除操作的线性表,遵循“先进先出”的原则。
存储结构:顺序队列和链队列。
基本操作:入队、出队、队头元素获取等。
循环队列:解决顺序队列“假溢出”问题。
应用:层次遍历、消息队列等。
三、串1、串的定义和存储方式定长顺序存储堆分配存储块链存储2、串的基本操作串的赋值、连接、比较、求子串等。
3、模式匹配算法朴素的模式匹配算法KMP 算法:理解其原理和计算 next 数组的方法。
四、数组和广义表1、数组数组的定义和存储结构数组的地址计算特殊矩阵的压缩存储(如对称矩阵、三角矩阵、稀疏矩阵)2、广义表广义表的定义和表示广义表的递归算法1、树的基本概念定义、术语(如节点、度、叶子节点、分支节点、父节点、子节点、兄弟节点、层次等)树的性质2、二叉树定义和特点二叉树的性质完全二叉树和满二叉树3、二叉树的存储结构顺序存储链式存储4、二叉树的遍历先序遍历中序遍历后序遍历层序遍历5、二叉树的递归和非递归遍历算法实现线索化的目的和方法7、树、森林与二叉树的转换8、哈夫曼树定义和构造方法哈夫曼编码六、图1、图的基本概念定义、术语(如顶点、边、权、有向图、无向图、邻接矩阵、邻接表等)2、图的存储结构邻接矩阵邻接表十字链表邻接多重表3、图的遍历深度优先搜索(DFS)广度优先搜索(BFS)4、图的应用最小生成树(Prim 算法、Kruskal 算法)最短路径(Dijkstra 算法、Floyd 算法)拓扑排序关键路径七、查找1、查找的基本概念关键字、平均查找长度等2、顺序查找算法实现时间复杂度3、折半查找算法实现时间复杂度判定树4、分块查找5、二叉排序树定义和特点插入、删除操作查找算法6、平衡二叉树定义和调整方法7、 B 树和 B+树结构特点基本操作8、哈希表哈希函数的构造方法处理冲突的方法(开放定址法、链地址法等)八、排序1、排序的基本概念排序的稳定性2、插入排序直接插入排序折半插入排序希尔排序3、交换排序冒泡排序快速排序4、选择排序简单选择排序堆排序5、归并排序6、基数排序7、各种排序算法的时间复杂度、空间复杂度和稳定性比较。
数据结构复习提纲

《数据结构》复习提纲1、什么是数据结构,数据结构4种基本结构: “数据结构”是研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和运算的一门学科。
集合、线性结构、树形结构、图形结构。
2、线性表的顺序存储和链式存储的特点:逻辑关系上相邻的两个元素在物理位置上也是相邻的。
可以随机存取表中任一元素,它的存储位置可用一个简单,直观的公式表示。
(因此线性表的顺序存储结构是一种随机存取的存储结构)3、熟悉算法2.3,算法2.4,算法2.5,算法2.7,算法2.8,算法2.11,算法2.12。
4、掌握栈和队列的特点。
5、第4章只考基本概念4.1节,第5章不考。
6、树中的基本概念;二叉树的性质(5个),包括证明。
7、二叉树的顺序存储和链式存储。
(特别是二叉链表)8、二叉树的遍历方法(先序、中序和后续),对任何一棵二叉树能够写出它的先序(中序和后续)序列。
掌握二叉树的先序(中序和后续)的递归算法。
9、掌握算法6.2、算法6.3和算法6.4。
10、掌握线索二叉树的概念,对于任意的一棵二叉树画出它的先序(中序和后续)线索二叉树。
11、掌握算法6.5,算法6.6,算法6.7。
12、掌握树的存储结构(双亲表示法、孩子兄弟表示法),掌握森林与二叉树的转换方法(孩子兄弟表示法)13、掌握哈夫曼树的构造方法,写出其对应的哈夫曼编码。
14、掌握图的基本概念。
掌握图的邻接矩阵、邻接表和逆邻接表表示。
15、掌握图的深度优先搜索和广度优先搜索,针对具体的邻接矩阵(或邻接表)写出其深度优先搜索序列和广度优先搜索序列。
16、掌握利用谱里姆算法和克鲁斯卡尔算法构造最小生成树的过程。
(图7.16和图7.18)17、掌握地杰斯特拉算法和弗洛伊德算法(见书189-190页和191-192页)18、第8章不考19、第9章掌握算法9.1,算法9.2。
什么是二叉排序树,如何生成二叉排序树(见书229页)。
掌握二叉排序树查找分析,即ASL。
数据结构复习提纲

数据结构复习提纲第一章绪论1.基本术语:数据,数据元素,数据对象,数据结构及其分类。
2.什么是算法?算法的特性。
3.时间复杂度及其简单计算。
第二章线性表1.线性表的定义,线性表的存储结构常有哪几种?各有何优缺点?2.顺序表的类型说明及其基本操作算法的实现3.链表结构的类型说明及其基本操作算法的实现。
表空条件,申请结点,插入,删除操作语句。
第三章栈和队列1.栈的定义及其特点。
队列的定义及其特点。
2.顺序栈的类型说明及其算法实现。
栈空,栈满条件,入栈出栈操作语句。
3.循环队列的类型说明及其算法实现。
队空,队满条件,入队出队操作,计算队列的长度语句。
第五章数组与广义表1.二维数组的两种存储方式及地址计算。
2.矩阵的压缩存储,对称矩阵,三角矩阵的地址计算。
3.什么是稀疏矩阵?稀疏矩阵的两种存储结构,算法的实现。
4.广义表的定义。
广义表的两种存储结构,广义表的表头,表尾计算第六章树和二叉树1.树的概念与定义。
2.二叉树。
满二叉树,完全二叉树的定义,二叉树的性质及其证明。
3.二叉树的存储结构及其类型说明。
4.二叉树的三种遍历及其递归算法实现。
5.树的三种存储结构。
6.树,森林与二叉树的转换。
7.哈夫曼树的定义。
哈夫曼树的构造及其哈夫曼编码。
第七章图1.图的定义及其术语。
2.图的存储结构。
邻接表,邻接矩阵。
3.图的深度,广度遍历及其应用4.最小生成树的两种构造算法。
5.什么是AOV网?拓扑排序的定义及其方法。
6.求关键路径的算法及其计算。
7.从源点到其余各顶点的最短路径的算法及其计算。
8.各对顶点的最短路径的算法及其计算。
第九章查找1.顺序表的查找算法及其算法实现ASL计算。
2.有序表的查找算法及其算法实现。
ASL计算3.二叉排序树的定义,特点,构造及其查找算法的实现ASL 计算。
4.B-树的定义,插入,删除,构造。
5.哈希函数,哈希冲突的定义。
构造哈希函数的方法,解决冲突的方法。
6.给出哈希函数,哈希冲突的解决方法,构造哈希表ASL计算。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
( 7)从线 性表中删除 所有其值重 复的元素,使 其所有元素 的值均不同 ,如对于线 性表(2,8,9, 2,5,5,6,8,7,2),则执行此算法后变为(2,8,9,5,6,7)。 解:void Delete5(List& L) //从线性表中删除所有其值重复的元素,使其所有 元素的值均不同 { int i=0; while(i<L.size){ int j=i+1; while(j<L.size) { //删除重复值为 L.list[i]的所有元素 if(L.list[j]==L.list[i]){ 第三章 集合、稀疏矩阵、和广义表 1、集合由具有相同属性的 数据元素组合而成,数据之间没有任何前驱和后继关系。 2、稀疏矩阵:非零元素个数远远少于零元素个数的矩阵 3、稀疏矩阵有顺序和链接两种存储结构。存储内容为三元组线性表及其行数、列数、非零元个数。 4、广义表简称表,是线性表的推广。一个广义表是 n(n≥0)个元素的一个有限序列,当 n=0 时则称为空表。 5、3-1. ⑴写出它的三元组线性表; 解:((1,2,4),(2,4,-3),(2,7,1),(3,1,8),(4,4,5),(5,,2,-7),(5,6,2),(6,4,6)) ⑵给出它的顺序存储表示; for(int k=j+1;k<L.size;k++) L.list[k-1]=L.list[k]; L.size--; } else j++; } i++; } }
解:下标 1 2 3 4 5 6 7 8 ... MaxTerms row(行号) 1 2 2 3 4 5 5 6 col(列号) 2 4 7 1 4 2 6 4 val(元 素值) 4 -3 1 8 5 -7 2 6 第四章 栈和队列 1、栈又称堆栈,是一种运算受限制的线性表,只允许在表的一端进行插入或删除。 2、A.栈的顺序存储结构:插入,删除 B.栈的链式存储结构:插入,删除 3、中缀表达式转换为后缀表达式算法:扫描一遍中缀算术表达式即可。中缀表达式转换成对应的后缀表达 式后,操作数的次序不变,运算符次序改变。设立栈暂存运算符,栈底预存优先级最低的@ 算法思想: (例:a+b*c 与 a*b+c)依次扫描中缀算术表达式的每个字符,若是操作数,直接输出到后缀 表达式;若是“ (” ,则进栈;若是“) ” ,则依次退出栈顶运算符发送给后缀表达式,直至遇到“(” , “(” 出栈; 若是运算符,且优先级大于栈顶元素,则入栈,否则依次退出低优先级栈顶运算符发送给后缀表达 式,再进栈。 优先级:乘除:2 ; 加减:1; “@” “(”:0 4、队列简称队,也是一种运算受限的线性表,只允许在表的一端进行插入,在表的另一端进行删除。 5、A.队列的顺序存储结构:插入,删除 B.队列的链式存储结构:插入,删除 6、4-1.假定有四个元素 A、B、C、D,按所列次序进栈,试写出所有可能的出栈列,注意,每一个元素进 栈后都允许出栈,如 ACDB 就是一种出栈序列。 解: ABCD ABDC ACBD ADCB BACD BADC BCAD BCDA BDCA CBAD CDBA DCBA 4-2. 已知一个中缀算术表达式为: 3+4/(25-(6+15))*8@。写出对应的后缀算术表达式。解:3 4 25 6 15 + - /8 * + @ 4-3 假定在一个链接队列中只设置队尾指针,不设置队首指针,并且让队尾结点的指针域指向队首结点 (称此为循环链队),试分别写出在循环链队上进行插入和删除的算法。 解: 插入操作的算法如下。 void QInsert(LNode*&Rear,const ElemType& item) //使新元素 item 的值插入到循 环链队中 { LNode*newptr=new Lnode; //得到一个由 newptr 指针所指 向的新结点 if(newptr==NULL){ cerr<<"Memory failare"<<end1; exit(1); } newptr->data=item;// 把 item 的值赋给新结点的值域 if(Rear==NULL) Rear=newptr->next=newptr; 第五章 树 1、树是树形结构的简称。是一种重要的非线性、递归的数据结构。 allocation //若链队为空,则新结点即是队 首结点又是队尾结点 else{ newptr->next=Rear->next; //使新结点的指针域指向队首 结点 Rear->next=newptr; //使队尾结点的指针域指向新 结点 Rear=newptr; //使新结点成为新的队尾结点 } } 删除操作的算法如下。 ElemType QDelete(LNode*&Rear) //从循环链队中删除队首元素 { if(Rear==NULL){ cerr<<"Linked queue is empty!"<<end1; exit(1); } LNode* p=Rear->next; // 使 p 指向队首结点 if(p==Rear) Rear=NULL; //若链队中只有一个结点, 则删 除后队尾指针为空 else Rear->next=p->next; //使队尾结点的指针域指向队 首结点的后继结点 ElemType temp=p->data;//暂存 队首元素 delete p;//回收原队首结点 return temp;//返回被删除的队 首元素 }
{ int i=0; while(i<L.size) if(L.list[i]==x){ for(int j=i+1;j<L.sizr;j++) L.list[j-1]=L.list[j];
L.size--; } else i++; }
⑸ 从线性表中删除其值在给定值 s 和 t 之间(要求 s 小于 t)的所有元素。 解:void Delete3(List& L,ElemType s,ElemType t) //从线性表中删除其值在给定值 s 和 t 之间的所有 元素 { int i=0; while(i<L.size) if((L.list[i]>=s)&&(L.list[i]<=t)){ ⑹ 从有序表中删除其值在给定值 s 和 t 之间(要求 s 小于 t)的所有元素。 解:void Delete4(List& L,ElemType s,ElemType t) //从有序表中删除其值在给定值 s 和 t 之间的所有 元素 { int i=0; while(i<L.size)//从有序表 L 中查找出大于等于 s 的第一个元素 if(L.list[i]<s)i++; else break; if(i<L.size){ While((i+j<L.size)&&(L.list[i+j]<=t)) j++;//求出 s 和 t 之间元素的个数 for(int k=i+j;k<L.size;k++) L.list[k-j]=L.list[k]; L.size-=j; } } for(int j=i+1;j<L.size;j++) L.list[j-i]=L.list[j]; L.size--; } else i++; }