- 博客(16)
- 收藏
- 关注
原创 数据结构(C语言版)——5、树
5、树(1)树的定义树形结构是一类重要的非线性数据结构,其中以树和二叉树最为常用。直观的看,树是以分支关系定义的层次结构。树是一种一对多的数据结构。树 (Tree)是 n(n ≥ 0)个结点的有限集。n = 0 时称为空树。在任意一棵非空树中:(1)有且仅有一个特定的称为根(Root)的结点;(2)当 n > 1 时,其余结点可分为 m(m > 0)个互不相交的有限集 T1、T2、……、Tm,其中每一个集合本身又是一棵树,并且称为根的子树(Sub Tree)。如下图所示。上图为一个结点
2020-10-21 14:35:53
273
原创 数据结构(C语言版)——4.3、链式队列实现
4.1、链式队列实现4.1.1、链式队列说明和单链表类似。链式队列即用一组任意的存储单元存储栈的数据元素。每个结点包括存放数据元素的数据域,和指示下一个队列结点的指针域。对于队尾元素而言,由于其没有下一个结点,故队尾结点的指针域始终为 NULL ,其数据域存放最后一个入队的数据元素(头出尾入),由于元素通过队尾入队,附设一个队尾指针( rear )。为了操作方便,这里给链队列添加一个头结点,并令头指针( front )指向头结点。链队列示意图如下图所示。注:可将链式队列结构看成带头结点的单链表
2020-10-07 11:32:24
477
原创 数据结构(C语言版)——4.2、循环队列实现
4.2、循环队列实现4.2.1、循环队列说明(1)循环队列的产生在队列的顺序结构中,由于顺序队列尾进头出的特性,存在如下图所示的情况。此状态不可再继续插入新的队尾元素,否则会造成数组越界;又不易像顺序栈那样进行存储再分配,扩大数组空间。但实际上队列的可用空间并未占满 ,这样会造成空间的严重浪费。一个巧妙的办法是,臆造一个环状的空间,即循环队列。进而解决了顺序单调队列由于 front 前移不可逆转的空间浪费的问题(2)循环队列结构上的特殊之处指针和队列元素之间的关系并
2020-10-07 11:32:03
408
原创 数据结构(C语言版)——4.1、顺序队列实现
4.1、顺序队列实现4.1.1、顺序队列说明和顺序表类似。顺序队列即队列的顺序存储结构是利用一组地址连续的存储单元依次存放 自队头 到队尾 的数据元素,同时附设指针 front 指示队头元素在顺序队列中的位置,设指针 rear 指示队尾元素在顺序队列中的位置。通常习惯做法,鉴于C语言中数组的下标约定从整数 0 开始,则为了方便,这里队头与队尾指针 front 与 rear 设为 int 变量。初始状态,front = rear 表示队列为空,每当插入一个新的队列元素时,rear 增 1 (只能从队
2020-10-06 16:32:27
1841
原创 数据结构(C语言版)——4、队列
4、队列(1)队列的定义和栈类似,队列(Queue)也是一种线性表,其特殊性在于队列的基本操作是线性表操作的子集,即队列是操作受限的线性表。和栈相反的是,队列是一种先进先出(first in first out)的线性表,简称 FIFO ,它只允许在表的一端进行插入,而在另一端删除元素。在队列中允许插入的一端叫做队尾(rear),允许删除的一端叫做队头(front)。假设栈 Q=(a1,a2,...,an)Q = (a_1,a_2,...,a_n)Q=(a1,a2,...,an),且元素按照
2020-10-06 14:40:54
216
1
原创 数据结构(C语言版)——3.2、链式栈实现
3.2、链式栈实现3.2.1、链式栈说明和单链表类似。链式栈即用一组任意的存储单元存储栈的数据元素。每个结点包括存放数据元素的数据域,和指示下一个栈结点的指针域。对于栈底元素而言,由于其没有下一个结点,故栈底结点的指针域始终为 NULL ,其数据域存放进栈的第一个数据元素。对于栈顶指针,由于栈只能通过栈顶进出数据,故只需要设置一个栈顶指针用于指示栈顶结点即可。链式栈的图解如下图所示。注:可将链式栈结构看成不带头结点的单链表,将栈顶指针看成头指针,将单链表的头插操作看作入栈,头删看作出栈,而不能对
2020-10-06 12:58:56
584
原创 数据结构(C语言版)——3.1、顺序栈实现
3.1、顺序栈实现3.1.1、顺序栈说明和顺序表(线性表的顺序存储结构)类似。顺序栈即栈的顺序存储结构是利用一组地址连续的存储单元依次存放 自栈底 到栈顶 的数据元素,同时附设指针 toptoptop 指示栈顶元素在顺序栈中的位置。通常习惯做法,以栈顶指针 top=0top=0top=0 表示空栈,鉴于C语言中数组的下标约定从整数 0 开始,则为了方便,这里栈顶指针 toptoptop 设为 intintint 变量。初始状态,top=0top = 0top=0 表示栈为空,每当插入一个新的栈顶元素时
2020-10-06 09:05:01
998
原创 数据结构(C语言版)——3、栈
栈(1)栈的定义栈也是一种线性表,其特殊性在于栈的基本操作是线性表操作的子集,即栈是操作受限的线性表。栈(stack)是限定仅在表尾进行插入或删除操作的线性表。其中,对栈而言,表尾端称为栈顶(top),表头端称为栈底(bottom)。不含元素的空表称为空栈。假设栈 S=(a1,a2,...,an)S = (a_1,a_2,...,a_n)S=(a1,a2,...,an),且元素按照 a1,a2,...,ana_1,a_2,...,a_na1,a2,...,an 次序进栈,则称 a1a_1
2020-10-06 09:04:01
149
2
原创 数据结构(C语言版)——2.2、单链表实现
2.2、单链表实现2.2.5、完整代码(1)头文件 singLinkList_ADT.h#ifndef LinkList_H#define LinkList_H#define OK 1#define ERROR 0typedef int Status; //自定义函数类型,其值是函数结果的状态代码typedef int ElemType; //自定义数据类型#include <stdio.h>#include <stdlib.h>#include <
2020-10-06 08:53:20
467
1
原创 数据结构(C语言版)——2.1、顺序表实现
2.1、顺序表实现2.1.1、顺序表说明(1)顺序表(SeqList)即线性表的顺序表示,用一组连续的存储单元依次存储线性表的数据元素。2.1.2、顺序表的优缺点及适用场合优点:方法简单、基于数组、易于实现;不用为表示结点间的逻辑关系而增加额外的开销;支持随机存取,可按下标随机访问元素。缺点:插入、删除操作时大约移动平均一半的元素,效率较低;需预先分配足够大的空间,估计过大会浪费,过小会溢出;存储空间连续,已造成存储空间的“碎片”现象。适用场合:适合“较稳定”的线性表,
2020-10-06 08:46:22
956
原创 数据结构(C语言版)——2、线性表
2、线性表基本概念(1)线性表(linear_list)是最常用且最简单的一种线性数据结构,一个线性表是n个数据元素的有限序列。线性表有两种存储结构:顺序存储(顺序表)、链式存储(链表)(2)线性结构的特点:存在唯一的一个被称为“第一个”的数据元素、存在唯一一个被称为“最后一个”的数据元素。除第一个之外,每一个数据元素均只有一个前驱;除最后一之外,每一个数据元素均只有一个后继。顺序表实现...
2020-10-06 08:44:08
209
原创 数据结构(C语言版)——8、树
8、树(1)树的定义树形结构是一类重要的非线性数据结构,其中以树和二叉树最为常用。直观的看,树是以分支关系定义的层次结构。树是一种一对多的数据结构。树 (Tree)是 n(n ≥ 0)个结点的有限集。n = 0 时称为空树。在任意一棵非空树中:(1)有且仅有一个特定的称为根(Root)的结点;(2)当 n > 1 时,其余结点可分为 m(m > 0)个互不相交的有限集 T1、T2、……、Tm,其中每一个集合本身又是一棵树,并且称为根的子树(Sub Tree)。如下图所示。上图为一个结点
2020-10-04 16:38:59
305
原创 数据结构(C语言版)——1、数据结构概论
1、数据结构概论(数据结构(C语言版))1.1基本概念(1)数据结构(data structure),是相互之间存在一种或多种特定关系的数据元素的集合(简单解释)。通常有如下四类集合:指结构中的数据元素之间除了“属于同一集合”的关系外,别无其他关系线性结构:指结构中的元素之间存在一对一的关系树形结构:指结构中的数据元素间存在一对多的关系图状结构(或网状结构):指结构中的元素间存在多对多的关系数据结构形式定义为:数据结构是一个二元组 Data_Structure = (D,S),其中D是数据元素
2020-10-03 16:50:05
222
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人