循环队列
Written with StackEdit中文版. 循环队列简介和顺序栈类似,顺序队列除了用一组地址连续的存储单元依次存放从队头到队尾的元素之外,还需附设两个指针front和rear分别只是队头元素及队尾元素的位置。 循环队列,则是将顺序队列臆造为一个环状的空间。为了判断循环队列的“已满”状态,规定这个空间的大小是一个定值,因此在C语言中不能用动态分配的一维数组来实现。 若用户无法预估所用的队列最大长度,则宜采用链队列。 声明与定义123456789101112131415161718192021222324252627282930#define MAXQSIZE 100;//最大队列长度typedef int QElemType;typedef int Status;#define OK 1#define ERROR 0#define OVERFLOW -1//循环队列——队列的顺序存储结构typedef struct{ QElemType *base;//初始化的动态分配存储空间 int front;//头指针 int rear;//尾指针 int si ...
单链队列
Written with StackEdit中文版. 单链队列简介和栈相反,队列是一种先进先出的线性表,其只允许在表的一端进行插入元素,而在另一端删除元素。 在队列中,允许插入的一端叫做队尾,允许删除的一端叫做队头。 队列的两种存储表示: 链队列 用链表表示的队列,这里只实现单链表队列. 循环队列 队列的顺序表示和实现,在【循环队列】文章中实现. 声明与定义1234567891011121314151617181920212223242526272829303132typedef int QElemType;typedef int Status;#define OK 1#define ERROR 0#define OVERFLOW -1//单链队列——队列的链式存储结构typedef struct QNode{ QElemType data; struct QNode *next;}QNode,*QueuePtr;typedef struct{ QueuePtr front; //队头指针 QueuePtr rear; //队尾指针 ...
顺序栈
Written with StackEdit中文版. 顺序栈简介栈,是限定仅在表尾进行插入或删除的线性表,其表尾称为栈顶,表头称为栈底。栈具有后进先出的特点,即先入栈的元素后出栈。 栈有两种存储表示方法: 顺序栈 — 即栈的顺序存储结构,是用一组地址连续的存储单元依次存放自栈底到栈顶的元素。 链栈 — 即栈的链式表示,其实现方法与单链表类似,这里不实现。 声明与定义12345678910111213141516171819202122232425262728typedef int SElemType;typedef int Status;#define STACK_INIT_SIZE 10 //存储空间初始分配量#define STACKINCREMENT 10 //存储空间分配增量#define OK 1#define ERROR 0#define OVERFLOW -1typedef struct { SElemType* base;//在栈构造之前和销毁之后,base值为NULL SElemType* top; //栈顶指针 int stacksiz ...
双向链表
Written with StackEdit中文版. 双向链表简介为克服单链表、循环链表的单向性,即如果要查询结点的直接前驱需要从表头指针出发,双向链表中的结点具有两个指针域:其一指向直接后继,另一指向直接前驱 声明与定义123456789101112#define OK 1#define ERROR 0typedef int ElemType;typedef int Status;//双向链表的存储结构typedef struct DuLNode{ ElemType data;//数据域 struct DuLNode* prior;//前驱指针域 struct DuLNode* next;//后继指针域}DuLNode, * DuLinkList; 相关方法手动输入n个元素的值,创建一个双向链表L注意是用返回值接收链表L12345678910111213141516171819202122DuLinkList CreateList_L(int n){ DuLNode* end, * p, * L; L = (DuLinkList)mallo ...
单链表&循环链表
Written with StackEdit中文版. 链表简介链表,是线性表的链式存储结构,相比于顺序表的结构特点来说,即逻辑关系上相邻的两个元素在物理位置上也相邻,是用一组(地址)任意的存储单元,如C语言中的结构体,来存储线性表的数据元素。这组存储单元可以是连续的,也可以是不连续的。 连续的存储单元是用数组来实现链表结构的,这种数组描述的链表又名静态链表(这里不实现) 不连续的存储单元使用指针来实现链表结构的,即存储单元之间用指针相连。根据相连的情况,分为单链表、循环链表和双向链表。 声明与定义1234567891011typedef int ElemType;typedef int Status;#define OK 1#define ERROR 0//单链表、循环链表的存储结构typedef struct LNode{ ElemType data;//数据域 struct LNode* next;//指针域}LNode,*LinkList; 相关方法逆位序手动输入n个元素的值,建立带表头结点的单链表L123456789101112void Crea ...
顺序表
Written with StackEdit中文版. 顺序表简介顺序表是线性表的顺序表示,指的是用一组地址连续的存储单元依次存储线性表的数据元素。在C语言中,通常使用动态分配的一维数组来表示这种顺序存储结构。 声明与定义123456789101112#define LIST_INIT_SIZE 10 //线性表存储空间的初始分配量#define LISTINCREMMENT 10 //线性表存储空间的分配增量#define OK 1typedef int ElemType;typedef int Status;typedef struct{ ElemType* elem; //存储空间基地址 int length; //长度 int listsize; //当前分配的存储容量(以sizeof(ElemType)为单位)}SqList; 相关方法构造一个空顺序表L123456789Status InitList_Sq(SqList *L) { L->elem = (ElemType*)malloc(LIS ...
Markdown语法
Written with StackEdit中文版. Markdown简介Markdown是一种轻量级的标记语言,通过使用简单的标记符号,将纯文本转换成格式丰富的HTML文档。 Markdown语法 Markdown的语法相对简单直观,通过标签来实现块级元素和行内元素的效果。注意,部分标记后面需要带空格,否则不生效 块级元素是指占据一整行或多行的元素,常用于格式化文本的结构和布局,如段落、标题、列表等。 标题通过1~6个”#”来控制标题字体的大小,并且字体自带加粗效果,如: 标题「Markdown语法」用了2个# 标题「块级元素」用了3个# 即#的数量越少,标题越大;越多,标题越小。 引用文本在文本的前面加”> “来实现,效果如下: 这里是一个引用文本~~~ 有序列表在文本前面加“1. ”来实现,在StackEdit编辑Markdown时换行时会自动补充序号,效果如下: 起床 刷牙 洗脸 无序列表 在文本前面加”- “来实现,效果如下: 吃饭 睡觉 玩游戏 复选框在文本前面加”- [ ] “来实现,实现如下: 123- [ ] 学习C语言- [ ] 学习Pyt ...
我的第一篇Hexo文章
Written with StackEdit中文版. 初入Hexo博客框架Hexo简介Hexo是一个快速、简洁且强大的静态博客框架。 它基于Node.js开发,使用Markdown语法来书写文章,并通过预设的模板生成静态网页。 它具有快速编译、多主题支持、插件丰富等特点,适用于个人博客、技术文档等各种静态网站的构建。 通过Hexo,用户可以轻松地管理和发布自己的网站内容,并提供了丰富的插件和主题供用户选择和使用。 与其他博客框架相比,Hexo具有简单易用、灵活可扩展等优势,被广泛应用于静态网站的搭建和维护。 Hexo的使用感想Hexo是一款是一款非常友好的面向新手的博客框架,作为一个前端小白,可以轻松理解其配置文件的含义并建立了属于自己的博客网站。 Butterfly主题简介Butterfly主题是一种开源的、响应式的博客主题。 它提供了简洁、美观的界面和丰富的功能,适用于个人博客、技术博客等多种场景。 Butterfly主题支持多种语言、主题定制、代码高亮、文章分类、标签云等功能,同时也具有快速加载和良好的用户体验。 它是Hexo博客框架的一个非常受欢迎的主题之一。 Butter ...