线性表的逻辑定义|E路上

线性结构是最简单且最常用的数据结构。线性表是一种典型的线性结构。 线性表的逻辑定义 线性表(Linear List)是由n(n≥0)个数据元素(结点)a1,a2,…,an组成的有限序列。 ① 数据元素的个数n定义为表的长度(n=0时称为空表)。 ② 将非空的线性表(n>0)记作:(a1,a2,…,an) ③ 数据元素ai(1≤i≤n)只是个抽象符号,其具体含义在不同情况下可以不同。 【例1】英文字…

队列的应用|一路上

队列的应用–舞伴问题 1、问题叙述 假设在周末舞会上,男士们和女士们进入舞厅时,各自排成一队。跳舞开始时,依次从男队和女队的队头上各出一人配成舞伴。若两队初始人数不相同,则较长的那一队中未配对者等待下一轮舞曲。现要求写一算法模拟上述舞伴配对问题。 2、问题分析 先入队的男士或女士亦先出队配成舞伴。因此该问题具体有典型的先进先出特性,可用队列作为算法的数据结构。 在算法中,假设男士和女士…

栈的应用|一路上

栈和队列的应用非常之广,只要问题满足后进先出和先进先出原则,均可使用栈和队列作为其数据结构。 栈的应用 1、 数制转换 将一个非负的十进制整数N转换为另一个等价的基为B的B进制数的问题,很容易通过”除B取余法”来解决。 【例】将十进制数13转化为二进制数。 解答:按除2取余法,得到的余数依次是1、0、1、1,则十进制数转化为二进制数为1101。 分析:由于最先得到的余数是转…

链队列|E路上

链队列 1、 链队列的定义    队列的链式存储结构简称为链队列。它是限制仅在表头删除和表尾插入的单链表。 2、 链队列的结构类型说明 注意: 增加指向链表上的最后一个结点的尾指针,便于在表尾做插入操作。 链队列示意图见上图,图中Q为LinkQueue型的指针。 3、 链队列的基本运算 (1) 置空队 void InitQueue(LinkQueue *Q) { Q->front=Q-&gt…

顺序队列-循环队列|E路上

顺序队列 1、顺序队列 (1)顺序队列的定义    队列的顺序存储结构称为顺序队列,顺序队列实际上是运算受限的顺序表。 (2) 顺序队列的表示 ①和顺序表一样,顺序队列用一个向量空间来存放当前队列中的元素。 ②由于队列的队头和队尾的位置是变化的,设置两个指针front和rear分别指示队头元素和队尾元素在向量空间中的位置,它们的初值在队列初始化时均应置为0。 (3) 顺序队列的基本操作 ①入队时:…

队列的定义及基本运算|E路上

队列的定义及基本运算 1、定义 队列(Queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表 (1)允许删除的一端称为队头(Front)。 (2)允许插入的一端称为队尾(Rear)。 (3)当队列中没有元素时称为空队列。 (4)队列亦称作先进先出(First In First Out)的线性表,简称为FIFO表。 队列的修改是依先进先出的原则进行的。新来的成员总是加入队尾(即不允…

链栈|E路上

链栈 栈的链式存储结构称为链栈。 1、链栈的类型定义 链栈是没有附加头结点的运算受限的单链表。栈顶指针就是链表的头指针。 链栈的类型说明如下: typedef struct stacknode{ DataType data struct stacknode *next }StackNode; typedef struct{ StackNode *top;  //栈顶指针 }LinkStack; 注…

顺序栈|E路上

顺序栈 栈的顺序存储结构简称为顺序栈,它是运算受限的顺序表。 1、 顺序栈的类型定义 #define StackSize 100 //假定预分配的栈空间最多为100个元素 typedef char DataType;//假定栈元素的数据类型为字符 typedef struct{ DataType data[StackSize]; int top; }SeqStack; 注意: ①顺序栈中元素用向量…

栈的定义及基本运算|E路上

栈和队列是两种特殊的线性表,它们的逻辑结构和线性表相同,只是其运算规则较线性表有更多的限制,故又称它们为运算受限的线性表。栈和队列被广泛应用于各种程序设计中。 栈的定义及基本运算 1、栈的定义 栈(Stack)是限制仅在表的一端进行插入和删除运算的线性表。 (1)通常称插入、删除的这一端为栈顶(Top),另一端称为栈底(Bottom)。 (2)当表中没有元素时称为空栈。 (3)栈为后进先出(Las…