数据结构

合集下载

常用八种数据结构

常用八种数据结构

常见的数据结构包括数组、链表、队列、栈、树、堆、哈希表和图,每种数据结构都有其特点,如下:常见数据结构• 1.数组• 2.链表• 3.队列• 4.栈• 5.树• 6.图•7.哈希表•8.堆1.数组特点:•固定大小的线性数据结构•支持快速随机访问•插入和删除效率比较低一般应用于需要快速随机访问元素的场景。

案例:2.链表特点:•动态大小的数据结构•插入和删除效率比较高•不支持快速随机访问适用于需要频繁插入和删除元素的场景案例:3.队列特点:•先进先出•插入操作在队尾进行,删除操作在队头进行应用于需要先进先出访问元素的场景,如任务调度、消息队列等案例:4.栈特点:•先进后出•插入和删除在栈顶进行应用于需要后进先出访问元素的场景,如函数调用栈、表达式求值等案例:5.树特点:•非线性,由节点和边组成•树中的节点有层次关系,一个节点可以有多个子节点应用于需要表示层次结构的场景,比如文件系统、组织结构等案例:6.图特点:•非线性,由节点和边组成•图中的节点可以通过边来相互连接应用于需要表示网络结构的场景,如社交网络、交通网络等。

案例:7.哈希表特点:•基于哈希函数实现的键值对数据结构•支持快速的插入、删除和查找操作应用于需要快速查找和插入操作的场景,如字典、缓存等。

案例:8.堆特点:•堆是一颗完全二叉树•分为最大堆和最小堆•最大堆:每个节点的值都大于或等于其子节点的值。

•最小堆:每个节点的值都小于或等于其子节点的值。

•支持快速获取最大值或最小值的操作。

适用于优先队列,堆排序和实现高效的合并K个有序链表问题。

案例。

什么是数据结构

什么是数据结构

什么是数据结构数据结构是计算机科学中的基础概念之一,它是指组织和存储数据的方式,以及数据之间的关系和操作。

在计算机程序设计中,数据结构是指特定数据的组织形式,这些数据可以是数字、字符、实体对象等。

数据结构的选择对于程序的效率和功能具有重要影响。

一、数据结构的基本概念数据结构主要包括以下几个基本概念:1. 数据元素:数据元素是构成数据的最小单位,可以是单个的基本数据类型,也可以是多个基本数据类型组合而成的复合数据类型。

2. 数据项:数据元素中的一个个数据项是可以进行操作的最小单位,也可以理解为一个字段或属性。

3. 数据对象:数据对象是指具有相同性质的数据元素的集合,是数据集合的抽象。

4. 数据结构:数据结构是指数据元素之间的关系以及支持的操作,可以是线性的、非线性的、顺序的、层次的等不同的组织方式。

5. 数据类型:数据类型是一种特定的数据结构,用于描述数据的存储格式和支持的操作。

常见的数据类型包括整型、浮点型、字符型等。

6. 数据存储:数据存储是指数据在计算机中的具体储存形式,可以是内存中的数组、链表,也可以是硬盘中的文件等。

二、常见的数据结构1. 数组:数组是把具有相同类型的数据元素按照一定顺序排列并以连续的内存空间表示的数据结构,通过下标可以快速定位元素。

2. 链表:链表是由若干个结点组成,每个结点包含数据元素和指向下一个结点的指针,它的特点是空间不连续,插入、删除操作较灵活。

3. 栈:栈是一种先进后出的数据结构,只允许在栈顶进行插入和删除操作,类似于弹夹。

4. 队列:队列是一种先进先出的数据结构,只允许在队尾插入元素,在队头删除元素,类似于排队。

5. 树:树是由若干个结点组成的层次结构,每个结点可以有多个子结点,用于表示具有层次关系的数据。

6. 图:图是由若干个结点和边组成,结点表示数据元素,边表示结点之间的关系,用于表示具有复杂关系的数据。

三、数据结构的应用数据结构在计算机领域有广泛的应用,常见的应用包括:1. 数据库管理系统:数据库中的数据需要通过适当的数据结构进行组织和管理,如B+树、散列表等。

数据结构大纲知识点

数据结构大纲知识点

数据结构大纲知识点一、绪论。

1. 数据结构的基本概念。

- 数据、数据元素、数据项。

- 数据结构的定义(逻辑结构、存储结构、数据的运算)- 数据结构的三要素之间的关系。

2. 算法的基本概念。

- 算法的定义、特性(有穷性、确定性、可行性、输入、输出)- 算法的评价指标(时间复杂度、空间复杂度的计算方法)二、线性表。

1. 线性表的定义和基本操作。

- 线性表的逻辑结构特点(线性关系)- 线性表的基本操作(如初始化、插入、删除、查找等操作的定义)2. 顺序存储结构。

- 顺序表的定义(用数组实现线性表)- 顺序表的基本操作实现(插入、删除操作的时间复杂度分析)- 顺序表的优缺点。

3. 链式存储结构。

- 单链表的定义(结点结构,头指针、头结点的概念)- 单链表的基本操作实现(建立单链表、插入、删除、查找等操作的代码实现及时间复杂度分析)- 循环链表(与单链表的区别,操作特点)- 双向链表(结点结构,基本操作的实现及特点)三、栈和队列。

1. 栈。

- 栈的定义(后进先出的线性表)- 栈的基本操作(入栈、出栈、取栈顶元素等操作的定义)- 顺序栈的实现(存储结构,基本操作的代码实现)- 链栈的实现(与单链表的联系,基本操作的实现)- 栈的应用(表达式求值、函数调用栈等)2. 队列。

- 队列的定义(先进先出的线性表)- 队列的基本操作(入队、出队、取队头元素等操作的定义)- 顺序队列(存在的问题,如假溢出)- 循环队列的实现(存储结构,基本操作的代码实现,队空和队满的判断条件)- 链队列的实现(结点结构,基本操作的实现)- 队列的应用(如操作系统中的进程调度等)四、串。

1. 串的定义和基本操作。

- 串的概念(字符序列)- 串的基本操作(如连接、求子串、比较等操作的定义)2. 串的存储结构。

- 顺序存储结构(定长顺序存储和堆分配存储)- 链式存储结构(块链存储结构)3. 串的模式匹配算法。

- 简单的模式匹配算法(Brute - Force算法)的实现及时间复杂度分析。

数据结构基础知识

数据结构基础知识

复习提纲第一章数据构造概述根本概念与术语〔P3〕1.数据构造是一门研究非数值计算程序设计问题中计算机的操作对象以及他们之间的关系和操作的学科.2.数据是用来描述现实世界的数字,字符,图像,声音,以及能够输入到计算机中并能被计算机识别的符号的集合2.数据元素是数据的根本单位3.数据对象一样性质的数据元素的集合4.数据构造三方面容:数据的逻辑构造.数据的存储构造.数据的操作.〔1〕数据的逻辑构造指数据元素之间固有的逻辑关系.〔2〕数据的存储构造指数据元素及其关系在计算机的表示( 3 ) 数据的操作指在数据逻辑构造上定义的操作算法,如插入,删除等.5.时间复杂度分析--------------------------------------------------------------------------------------------------------------------1、名词解释:数据构造、二元组2、根据数据元素之间关系的不同,数据的逻辑构造可以分为集合、线性构造、树形构造和图状构造四种类型。

3、常见的数据存储构造一般有四种类型,它们分别是___顺序存储构造_____、___链式存储构造_____、___索引存储构造_____和___散列存储构造_____。

4、以下程序段的时间复杂度为___O(N2)_____。

int i,j,*;for(i=0;i<n:i++) n+1for(j=0;j<n;j++) n+1*+=i;------------------------------------------------------------------------------------------------------------------第二章线性表1.顺序表构造由n(n>=0)个具有一样性质的数据元素a1,a2,a3……,an组成的有穷序列//顺序表构造#define MA*SIZE 100typedef int DataType;Typedef struct{DataType items[MA*SIZE];Int length;}Sqlist,*LinkList;2.单链表(1)链表结点构造//链表的节点构造Typedef struct Node{int data;struct Node *ne*t;} Lnode,*Pnode,*LinkList;(2)结点遍历void TraverseList(LinkList t){LinkList p;while(t){p=t;t=t->ne*tfree(p);}}(3)链表操作算法:初始化、插入、输出、删除void InitList(LinkList *h){*h=(LinkList)malloc(sizeof(LNode));if(!h){print("初始化错误〞);return;}(*h)->ne*t=NULL;}void InsertList(LinkList h,int pos,datatype *){ LinkList p=h,q;int i=0;while(p&&i<pos-1){p=p->ne*t;i++;}if(!p||i>pos-1)print("插入位置出错!!〞);InitList(&q);q->ne*t=NULL;q->data=*;}void DeleteList(LinkList h,int pos){LinkList p=h,q;int i=0;while(p&&i<pos-1){p=p->ne*t;i++;}if(!p||i>pos-1){cout<<〞删除位置错误〞;return;}q=p->ne*t;p->ne*t=q->ne*t;free(q);}-----------------------------------------------------------------------------------------------------------------1、线性表中,第一个元素没有直接前驱,最后一个元素没有直接后驱。

什么是数据结构

什么是数据结构

什么是数据结构什么是数据结构1. 数据结构的定义数据结构是计算机科学中研究数据组织、存储方式以及数据操作的一门学科。

它关注的是如何在计算机中高效地存储和组织数据,以及如何设计和实现有效的数据操作算法。

2. 数据结构的重要性在计算机领域中,处理和操作数据是一项基本任务。

无论是简单的文本文件,还是复杂的数据库系统,数据都是核心。

因此,合理的数据组织和高效的数据操作算法对于计算机程序的性能和质量至关重要。

3. 数据结构的分类数据结构可以根据数据的组织方式进行分类。

常见的数据结构包括:(1) 线性结构线性结构是数据元素之间存在一对一关系的结构。

它的特点是:数据元素之间只有前后关系,不存在分支。

常见的线性结构有数组、链表、栈和队列等。

(2) 树形结构树形结构是数据元素之间存在一对多的关系的结构。

它的特点是:每个元素之间都有一个明确的父节点和零个或多个子节点。

常见的树形结构有二叉树、堆和树等。

(3) 图形结构图形结构是数据元素之间存在多对多的关系的结构。

它的特点是:数据元素之间的关系可以是任意的。

常见的图形结构有无向图和有向图等。

4. 数据结构的基本操作在数据结构中,有一些基本操作是常用且必不可少的。

常见的数据结构基本操作包括:(1) 插入插入操作是向指定位置插入一个新的元素。

对于不同的数据结构,插入操作的实现方式也不同。

(2) 删除删除操作是从数据结构中删除指定位置的元素。

删除操作的实现方式也因数据结构的不同而有所差异。

(3) 查找查找操作是在数据结构中搜索并定位指定的元素。

不同的数据结构可能采用不同的查找算法。

(4) 修改修改操作是对数据结构中的指定元素进行更改。

(5) 遍历遍历操作是指按照某种方式访问并处理数据结构中的所有元素。

5. 数据结构的应用数据结构不仅仅是一种抽象的概念,它也具有广泛的应用。

以下是数据结构在实际应用中的一些常见用途:(1) 数据库系统在数据库系统中,数据结构被用来组织和管理存储在数据库中的数据。

数据结构

数据结构

第1章绪论1.1 什么是数据结构数据与数据之间的关系1.2 基本概念和术语1.基本定义(1).数据(Data) :是客观事物的符号表示。

在计算机科学中指的是所有能输入到计算机中并被计算机程序处理的符号的总称。

数据元素(Data Element) :是数据的基本单位,在程序中通常作为一个整体来进行考虑和处理。

(2)数据项(Data Item):一个数据元素可由若干个数据项组成。

数据项是数据的不可分割的最小单位。

数据项是对客观事物某一方面特性的数据描述。

数据对象(Data Object):是性质相同的数据元素的集合,是数据的一个子集。

2.举例如字符集合C={‘A’,‘B’,‘C’,…}--C表示字符对象;A ,B等表示数据元素;再如学生集合Students={“Zhangsan”, “Lisi”,…}Zhangsan(ID,name,age,grade,…)……--Students表示学生对象;“Zhangsan”、“Lisi”表示数据元素;Zhangsan的ID、name、age等表示数据项。

3.数据结构的形式定义数据结构的形式定义是一个二元组:Data-Structure=(D,S)其中:D是数据元素的有限集,S是D上关系的有限集4.逻辑结构与物理结构(1)数据元素之间的关系可以是元素之间代表某种含义的自然关系,也可以是为处理问题方便而人为定义的关系,这种自然或人为定义的“关系”称为数据元素之间的逻辑关系,相应的结构称为逻辑结构。

(2)数据结构在计算机中的表示(映像)称为数据的物理结构。

数据结构的存储方式1)顺序存储结构:用数据元素在存储器中的相对位置来表示数据元素之间的逻辑结构(关系)。

2)链式存储结构:在每一个数据元素中增加一个存放另一个元素地址的指针(pointer ),用该指针来表示数据元素之间的逻辑结构(关系)。

3)例:设有数据集合A={3.0,2.3,5.0,-8.5,11.0} ,两种不同的存储结构。

数据结构百度百科

数据结构百度百科

数据结构概述数据结构是计算机存储、组织数据的方式。

数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。

通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。

数据结构往往同高效的检索算法和索引技术有关。

目录[隐藏][编辑本段]基本简介数据结构在计算机科学界至今没有标准的定义。

个人根据各自的理解的不同而有不同的表述方法:Sartaj Sahni在他的《数据结构、算法与应用》一书中称:“数据结构是数据对例的数据元素之间的各种联系。

这些联系可以通过定义相关的函数来给出。

”他将数据对象(data object)定义为“一个数据对象是实例或值的集合”。

Clifford A.Shaffer在《数据结构与算法分析》一书中的定义是:“数据结构是ADT (抽象数据类型 Abstract Data Type)的物理实现。

”Lobert L.Kruse在《数据结构与程序设计》一书中,将一个数据结构的设计过程分成抽象层、数据结构层和实现层。

其中,抽象层是指抽象数据类型层,它讨论数据的逻辑结构及其运算,数据结构层和实现层讨论一个数据结构的表示和在计算机内的存储细节以及运算的实现。

[编辑本段]重要意义一般认为,一个数据结构是由数据元素依据某种逻辑联系组织起来的。

对数据元素间逻辑关系的描述称为数据的逻辑结构;数据必须在计算机内存储,数据的存储结构是数据结构的实现形式,是其在计算机内的表示;此外讨论一个数据结构必须同时讨论在该类数据上执行的运算才有意义。

在许多类型的程序的设计中,数据结构的选择是一个基本的设计考虑因素。

许多大型系统的构造经验表明,系统实现的困难程度和系统构造的质量都严重的依赖于是否选择了最优的数据结构。

许多时候,确定了数据结构后,算法就容易得到了。

有些时候事情也会反过来,我们根据特定算法来选择数据结构与之适应。

不论哪种情况,选择合适的数据结构都是非常重要的。

选择了数据结构,算法也随之确定,是数据而不是算法是系统构造的关键因素。

常见的数据结构有哪些

常见的数据结构有哪些

常见的数据结构有哪些数据结构是一种用于组织和存储数据的方法。

在计算机科学中,数据结构是必不可少的,因为它们用于存储和管理大量的数据。

常见的数据结构包括数组、链表、栈、队列、哈希表和树等。

本文将详细介绍这些数据结构的定义、特点和应用。

一、数组数组是一种非常基本的数据结构,它是一组相同类型的数据元素的集合。

数组的每个元素可以通过索引访问,索引从零开始,并按顺序排列。

数组中的元素可以是任何数据类型,比如整数、浮点数、字符或字符串等。

数组的主要特点是访问元素的时间复杂度为O(1),查找和修改元素都非常快,但插入和删除元素的时间复杂度较高,为O(n)。

因此,数组适合用于静态的、预先知道元素数目的情况下,而不适合在动态的数据集合中进行插入和删除操作。

二、链表链表是一种动态的、常用于动态内存分配的数据结构。

链表由一系列节点组成,每个节点包含两个部分:数据和指向下一个节点的指针。

链表的首节点称为头结点,最后一个节点称为尾节点,尾节点的指针指向NULL或空。

链表可以分为单向链表和双向链表。

单向链表只有一个指针指向下一个节点,而双向链表有两个指针,一个指向前一个节点,一个指向后一个节点。

链表的主要特点是插入和删除元素的时间复杂度为O(1),因为只需要修改链表中的节点指针,而不需要整体移动元素。

但是,访问元素的时间复杂度为O(n),因为链表中的元素不是连续的,需要从头结点开始遍历整个链表。

三、栈栈是一种具有“先进后出”(Last In First Out,LIFO)特点的数据结构。

栈的操作包括push(入栈)和pop(出栈),压入栈中的最后一个元素会成为第一个出栈的元素。

栈的主要应用是在函数调用中保存临时变量和返回地址。

当一个函数被调用时,它的局部变量和参数被压入栈中,然后函数返回时,这些变量和参数被弹出栈。

栈也用于处理表达式、计算器、括号匹配、深度优先搜索和回溯算法等。

通常,栈的实现采用链表或数组。

四、队列队列是一种具有“先进先出”(First In First Out,FIFO)特点的数据结构。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第二章线性表一、选择题(1)两个有序线性表分别具有 n 个元素与 m 个元素且n≤m,现将其归并成一个有序表,其最少的比较次数是(A)。

A.n B.m C.n−1 D.m+n(2)非空的循环单链表 head 的尾结点(由 p 所指向)满足(C )。

A.p->next==NULL B.p==NULL C.p->next==head D.p==head(3)在带头结点的单链表中查找 x 应选择的程序体是(ABC )。

注:C最优A.node *p=head->next; while (p && p->info!=x) p=p->next;if (p->info==x)return p else return NULL;B.node *p=head; while (p&& p->info!=x) p=p->next; return p;C.node *p=head->next;while (p&&p->info!=x) p=p->next; return p;D.node *p=head; while (p->info!=x) p=p->next ; return p;(4)线性表若采用链式存储结构时,要求内存中可用存储单元的地址(D )。

A.必须是连续的 B.部分地址必须是连续的C.一定是不连续的 D.连续不连续都可以(5)在一个具有 n 个结点的有序单链表中插入一个新结点并保持单链表仍然有序的时间复杂度是(B )。

A.O(1) B.O(n) C.O(n2) D.O(nlog2n)(6)在一个长度为 n 的顺序表中删除第 i 个元素(1<=i<=n)时,需向前移动(A )个元素。

A.n−i B.n−i+1 C.n−i−1 D.i(7)若长度为 n 的线性表采用顺序存储结构存储,在第 i 个位置上插入一个新元素的时间复杂度为(A)。

A.O(n) B.O(1) C.O(n2) D.O(n3)(8)若从键盘输入 n 个元素,则建立一个有序单向链表的时间复杂度为(B)。

A.O(n) B.O(n2) C.O(n3) D.O(n×log2n)(9)下面哪个术语与数据的存储结构无关(D)。

A.顺序表 B.链表 C.散列表 D.队列(10)在一个单链表中,若删除 p 所指结点的后续结点,则执行(A)。

A.p->next=p->next->next; B.p=p->next; p->next=p->next->next;C.p->next=p->next; D.p =p->next->next;(11)在一个单链表中,若 p 所指结点不是最后结点,在 p 之后插入 s 所指结点,则执行(B )。

A.s->next=p;p->next=s; B.s->next=p->next;p->next=s;C.s->next=p->next;p=s; D.p->next=s;s->next=p;二、设计一个算法,利用单链表原来的结点空间将一个单链表就地转置。

答案:void invent(Lnode *head){Lnode *p,*q;if(!head->next) return ERROR;p=head->next; q=p->next; p->next =NULL;while(q){p=q; q=q->next; p->next=head->next; head->next=p;}}三、设计一个算法,求一个带头结点单链表中的结点个数。

答案:int L(head){node * head;int n=0;node *p;p=head;while(p!=NULL){ p=p->next;n++;}return(n);}四、已知一个顺序表中的各结点值是从小到大有序的,设计一个算法,插入一个值为 x 的结点,使顺序表中的结点仍然是从小到大有序。

答案:void Insert_sq(Sqlist va[], ElemType x){int i, j, n;n=length(va[]);if(x>=va[n-1])va[n]=x;else{i=0;while(x>va[i]) i++;for(j=n-1;j>=i;j--)va[j+1]=va[j];va[i]=x; }n++;}或Status Insert_SqList(SqList &va,int x){if(va.length+1>va.listsize) return ERROR;va.length++;for(i=va.length-1;va.elem[i]>x&&i>=0;i--) (6分)va.elem[i+1]=va.elem[i]; (2分)va.elem[i+1]=x;(2分)return OK;}//Insert_SqList五、假设递增有序链表A、B分别表示一个集合,设计算法以求解C= A∩B,并分析算法的时间复杂度。

LinkList union(LinkList A,LinkList B){ LinkList C, p,q,s,r;p=A->next;q=B->next;C=A; r=C;while (p&&q){ if (p->data==q->data){ r->next=p; r=p;p=p->next; q=q->next;}else if (p->data<q->data)p=p->next;else q=q->next;}r->next= NULLfree(B);return C;}六、假设顺序表L中的元素按从小到大的次序排列,设计算法以删除表中重复的元素, 并要求时间尽可能少。

要求:(1)对顺序表(1,1,2,2,2,3,4,5,5,5,6,6,7,7,8,8,8,9)模拟执行本算法,并统计移动元素的次数。

(2)分析算法的时间性能。

将元素分成两个部分:已经处理元素和待处理元素。

已经处理部分返回L中,用下标i指示最后一个元素,初始化i=0。

待处理部分用下标j指示第一个元素,初始化j=1.左边下标小于i的元素已经处理好重复,等于i是当前正在处理的元素,将data[i]与data[j]进行比较,会出现下列情况:① data[i]==data[j],说明j指示的是i的重复元素,继续处理j的下一个元素,即执行j++。

② data[i]<data[j],说明j指示元素与i的元素不同,如果i+1!=j,将j元素复制到i+1,即:L.data[i+1]=L.data[j],再执行j++,i++;若i+1==j,说明j是i的直接后继,无需复制,直接执行i++,j++。

循环执行上述操作,直到表尾。

修改L的长度为i+1。

void DeleteRepeatData(seqList & L){int i,j; //分别指向已处理部分最后元素和未处理部分第一个元素,皆为数组下标if(L.listLen<2)return; //少于2个元素,直接退出i=0; //初始化i指向第一个元素j=1; //j指向第二个元素while(j<L.listLen){if(L.data[i]==L.data[j]) //j为重复元素,j后移j++;else //因为L递增,所以剩下情况即L.data[i]<L.data[j],j为目标元素{//如果j==i+1,说明j紧随i,无需移动元素,直接i++、j++即可if((i+1)!=j)L.data[i+1]=L.data[j]; //j元素复制到i+1i++; //无论那种情况,都需要同时后移i、jj++;}}L.listLen=i+1; //修改表的实际长度}(2)算法的时间复杂度O(n)。

第三章栈和队列一、选择题(1)设栈 S 和队列 Q 的初始状态为空,元素 e1、e2、e3、e4、e5 和 e6 依次通过栈 S,一个元素出栈后即进入队列 Q,若 6 个元素出队的序列为 e2、e4、e3、e6、e5 和 e1,则栈 S的容量至少应该为(C)。

A.6 B.4 C.3 D.2(2)设栈的输入序列为 1、2、3… n,若输出序列的第一个元素为 n,则第 i 个输出的元素为(B )。

A.不确定 B.n−i+1 C.I D.n−i(3)用不带头结点的单链表存储队列时,其队头指针指向队头结点,其队尾指针指向队尾结点,则在进行插入操作时( D)。

A.仅修改队头指针 B.仅修改队尾指针C.队头、队尾指针都要修改 D.队头,队尾指针都可能要修改(4)队列是一种特殊的线性表,其特殊性在于(C )。

A.插入和删除在表的不同位置执行 B.插入和删除在表的两端位置执行C.插入和删除分别在表的两端执行 D.插入和删除都在表的某一端执行(5)栈是一种特殊的线性表,具有(B)性质。

A.先进先出 B.先进后出 C.后进后出 D.顺序进出(6)顺序循环队列中(数组的大小为 n),队头指示 front 指向队列的第 1 个元素,队尾指示 rear 指向队列最后元素的后 1 个位置,则循环队列中存放了 n−1 个元素,即循环队列满的条件为(B)。

A.(rear+1)%n=front−1 B.(rear+1)%n=frontC.(rear)%n=front D.rear+1=front(7)顺序循环队列中(数组的大小为 6),队头指示 front 和队尾指示 rear 的值分别为 3和 0,当从队列中删除 1 个元素,再插入 2 个元素后,front 和 rear 的值分别为(D )。

A.5 和 1 B.2 和 4 C.1 和 5 D.4 和 2二、写出下列程序段的输出结果(栈的元素类型SElem Type为char)。

void main( ){Stack S;char x,y;InitStack(S);x=’c’;y=’k’;Push(S,x);Push(S,’a’);Push(S,y);} 结果:k a c三、简述以下算法的功能(栈和队列的元素类型均为int)。

void algo3(Queue &Q){Stack S; int d;InitStack(S);while(!QueueEmpty(Q)){DeQueue (Q,d); Push(S,d);};while(!StackEmpty(S)){Pop(S,d); EnQueue (Q,d);}} 队列里的元素逆序四、如果对循环队列采用设置运算标志的方法来区分队列的满和空的状态,试给出对应的各运算的实现。

相关文档
最新文档