![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言的数据结构与算法
ZCH_CSND
这个作者很懒,什么都没留下…
展开
-
链表api的设计与实现
#ifndef _ZCH_LINKLIST_H_#define _ZCH_LINKLIST_H_//数据封装typedef void LINKLIST;//链表节点的指针域typedef struct _LinkListNode{ struct _LinkListNode* next;}LinkListNode//创建LinkList* Create();//销毁...翻译 2018-06-13 22:21:13 · 479 阅读 · 0 评论 -
queue链式存储的设计与实现
#ifndef _ZCH_LINKQUEUE_H_#define _ZCH_LINKQUEUE_H_typedef void LinkQueue;LinkQueue* Create();void Destroy(LinkQueue* queue);void Clear(LinkQueue* queue);int Append(LinkQueue* queue, void* i...翻译 2018-07-01 19:41:51 · 102 阅读 · 0 评论 -
queue顺序存储的设计与实现
一、Queue基本概念1. 队列是一种特殊的线性表2. 队列仅在线性表的两端进行操作3. 队头(Front):取出数据元素的一端4. 队尾(Rear):插入数据元素的一端5. 队列不允许在中间进行插入操作二、设计与实现#ifndef _ZCH_SEQQUEUE_H_#define _ZCH_SEQQUEUE_H_typedef void SeqQueueSeqQueue* Create(...翻译 2018-07-01 16:55:14 · 187 阅读 · 0 评论 -
stack链式存储的设计与实现
一、基本概念二、设计与实现#ifndef _ZCH_LINKSTACK_H_#define _ZCH_LINKSTACK_H_typedef void LinkStack; //封装,实质内部维护着另一个数据类型typedef struct _tag_LinkStackNode //节点的描述{ struct _tag_LinkStackNode* next; //指针域 ...翻译 2018-07-01 15:02:11 · 183 阅读 · 0 评论 -
顺序存储的线性表的api——设计与实现
//头文件//纯手打,未验证#ifndef _ZCH_SEQLIST_H_#define _ZCH_SEQLIST_H_typedef void SeqList; // 数据封装typedef void SeqListNode;//创建一个顺序存储的线性表SeqList* Create1(int capacity);int Create2(SeqList** handle, i...翻译 2018-06-10 19:41:31 · 214 阅读 · 0 评论 -
线性表的理论性东西
一、线性表定义:1. 线性表(list)是零个或多个数据元素的集合。2. 线性表中的数据元素之间是有顺序的。3. 线性表中数据元素个数是有限的。4. 线性表中数据元素类型必须相同。数学上的定义:线性表是具有相同类型的n(n>=0)个数元素的有限序列。(a1, a2, ..., an)。ai是表项,n是长度。二、性质:1. a0为线性表第一个元素,只有一个后继。2. an为线性表最后一个元素,...翻译 2018-06-10 17:55:29 · 331 阅读 · 0 评论 -
数据结构与算法理论性的东西
一、数据结构研究的是非数值计算程序问题中的操作对象以及它们之间的关系。从这句话,我可以得出两点,1.数据结构不是研究数值计算的,2.数据结构是研究操作对象以及它们之间的关系的。二、数据就是程序中的操作对象,其特点是可以输入到计算机中并且可以被计算机程序处理。数据是一个抽象的概念,在程序中具体表现为某种程序设计语言的数据类型,如int、float、char等等。三、数据元素:组成数据的基本单位,可理...翻译 2018-06-10 16:10:14 · 376 阅读 · 0 评论 -
循环链表的理论知识与api的设计实现
一、循环链表的定义:将单链表中最后一个数据元素的next指针指向第一个元素。二、循环链表的操作:循环链表拥有单链表的所有操作。 1. 创建链表 2. 销毁链表 3. 获取链表的长度 4. 清空链表 5. 获取pos位置的元素 6. 插入元素到pos位置 7. 删除pos位置的元素三、游标的定义(新增的功能) 在循环链表中可以定义一个“当前指针”,通常...翻译 2018-06-18 00:53:42 · 187 阅读 · 0 评论 -
stack顺序存储的设计与实现
一、stack基本概念 栈是一种特殊的线性表,栈仅能在线性表的一端进行操作,栈顶(top):允许操作的一端;栈底(bottom):不允许操作的一端。二、stack的常用操作 1. 创建栈 2. 销毁栈 3. 清空栈 4. 进栈 5. 出栈 6. 获取栈顶元素 7. 获取栈的大小三、栈顺序存储的设计与实现#ifndef _ZCH_SEQSTACK_H_...翻译 2018-06-24 22:54:27 · 226 阅读 · 0 评论 -
双向链表的理论知识与api的设计实现
一、单向链表的局限:单向链表的节点都只有一个指向下一个节点的指针;单向链表的数据元素无法直接访问其前驱元素;逆序访问单向链表中的元素是极其耗时的操作。二、双向链表的定义:在单向链表的结点基础上增加一个指向其前驱的pre指针。三、双向链表的所有操作: 1. 创建链表 2. 销毁链表 3. 获取链表的长度 4. 清空链表 5. 获取第pos个元素 6. 插入元素到位...翻译 2018-06-24 17:51:30 · 224 阅读 · 0 评论 -
树结构理论知识
一、树结构特点:树结构是非线性结构,一个直接前驱,可能有多个直接后继(1:n)。二、树的定义:由一个或多个(n>=0)节点组成的有限集合T,有且仅有一个节点称为根(root),当n>1时,其余的节点为m(m>=0)个互不相交的有限集合T1,T2,...,Tm。每个集合本身又是棵树,称其为根的子树。注意:空树也是树,树具有递归性(树中有树)。三、树的相关术语: 1. 根:根节...翻译 2018-07-03 22:22:22 · 1087 阅读 · 0 评论