算法与数据结构
xwt321
这个作者很懒,什么都没留下…
展开
-
数据结构之循环队列
队列是一个能够实现“先进先出”的存储结构。队列分为链式队列和静态队列;静态队列一般用数据来实现;链式队列是用链表来实现队列。在对循环队列操作之前,先要建立队列结构元素:#define BUF_SIZE 10 //循环队列的空间大小typedef struct Queue{ int *BUF; int front; int rear;}QUEUE;1.初始化是为新建的队列分配内存空间,然后在将头尾指针置零:void initQueue(QUEUE *qu原创 2021-04-22 11:06:30 · 351 阅读 · 0 评论 -
队列的链式存储结构
队列的链式存储结构,其实就是线性表的单链表,只不过它只能尾进头出而已,我们把它简称为链队列。为了操作上的方便,我们将队头指针指向链队列的头结点,而队尾指针指向终端结点,如下图所示:空队列时,front和rear都指向头结点。链队列的结构为:typedef int QElemType;typedef struct QNode{ QElemType data;原创 2018-01-26 09:57:17 · 591 阅读 · 0 评论 -
栈的链式存储结构
栈的链式存储结构,简称为链栈。 栈是栈顶来做插入和删除操作,由于单链表有头指针,而栈顶指针也是必须得,所以比较好的办法是把栈顶放在单链表的头部。因为栈顶在头部,单链表中常用的头结点也就失去了意义,通常对于链栈来说。是不需要头结点的。如下图所示:对于空栈来说,链表原定义是头指针指向空,那么链栈的空其实就是top=NULL。链栈的结构代码如下:typedef st原创 2018-01-25 18:03:31 · 640 阅读 · 0 评论 -
栈的顺序存储结构
栈是限定仅在表尾进行插入和删除操作的线性表。 我们把允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),不含任何数据元素的栈称为空栈。栈又称为后进先出(Last In First Out)的线性表,简称LIFO结构。 既然栈是线性表的特征,那么栈的顺序存储其实也是线性表顺序存储的简化,我们称为顺序栈。线性表是用数组来实现的,我们定义一个top变量来指原创 2018-01-25 17:00:32 · 302 阅读 · 0 评论 -
单链表的相关操作
1.单链表的读取 在线性表的顺序存储结构中,我们计算任意一个元素的存储位置很容易。单在单链表中,由于第i个元素到底在哪?没办法一开始就知道,必须得从头开始找。获得链表第i个数据的算法思路如下:1)声明一个结点p指向链表第一个结点,初始化j从1开始;2)当j3)若到链表末尾p为空,则说明第i个元素不存在;4)否则查找成功,返回结点p的数据。代码算法实现如下:/*原创 2018-01-25 10:56:26 · 625 阅读 · 0 评论 -
数据结构与算法之线性表的链式存储结构
在前章中的顺序结构中,每个数据元素只需存数据元素信息就可以了,而在链式结构中,除了要存数据元素信息外,还要存储它的后继元素的存储地址。 因此,为了表示每个数据元素ai与其直接后继数据元素ai+1之间的逻辑关系,对数据元素ai来说,除了存储其本身的信息之外,还需存储一个指示其直接后继的信息(即直接后继的存储位置)。我们把存储数据信息的域称为数据域,把存储直接后继位置的域称为指针域。指针域原创 2018-01-24 17:15:31 · 446 阅读 · 0 评论 -
数据结构与算法之线性表的顺序存储结构
线性表(List):零个或多个数据元素的有限序列。 线性表的数据对象集合为{a1,a2,......,an},每个元素的类型均为DataType。其中,除第一个元素a1外,每个元素有且只有一个直接前驱元素,除了最后一个元素an外,每个元素有且只有一个后继元素。数据元素之间的关系是一对一的关系。 线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素原创 2018-01-24 14:27:34 · 373 阅读 · 0 评论 -
冒泡排序
冒泡排序(Bubble Sort)一种交换排序,它的基本思想是:两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止。 先声明一个用于排序用的顺序表结构#define MAXSIZE 10 /* 用于要排序数组个数最大值 */typedf struct{ int r[MAXSIZE]; /* 用于存储要排序数组 */...原创 2018-03-08 08:52:03 · 224 阅读 · 0 评论