
数据结构
文章平均质量分 88
LLLLLLLLLLLLLLL.
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构—顺序表
顺序表:用一段地址连续的存储单元依次存储数据元素的线性结构地址连续的空间,一般情况下采用数组,但数组有静态数组和动态数组所以顺序表分为:静态顺序表和动态顺序表程序分为三个部分:seqlist.h(头文件)、seqlist.c(函数实现)、 main.c(测试文件)seqlist.h部分#pragma once ...原创 2018-03-11 22:06:19 · 373 阅读 · 1 评论 -
数据结构—堆
堆的定义:堆是一个完全二叉树 堆有两种, 一种叫小堆(小根堆, 最小堆), 一种叫大堆(大根堆, 最大堆). 以小堆为例, 这个树的根节点是这个树中的最小的元素,对于任意一个子树来说, 子树的根节点, 小于左右孩子节点的值. 以大堆为例, 这个树的根节点是这个树种的最大元素,对于任意一个子树来说, 子树的根节点, 大于左右孩子节点的值. 头文件 heap.h#pragma once #inclu...原创 2018-06-03 16:10:16 · 264 阅读 · 0 评论 -
共享栈(一个数组实现两个栈)
原理:想要一个数组实现两个栈,那么就必须一个栈的栈顶从数组下标为0处开始,另一个栈从数组额最大下标处开始,两个栈相对而生如下图所示:如何判断栈满?当两个栈顶标记重合时,表示共享栈已经满了代码如下:头文件ShareStack.h#pragma once#include<stdio.h>#include<stdlib.h>typedef char StackType;...原创 2018-04-26 20:54:23 · 10689 阅读 · 0 评论 -
判定字符串是否按照出栈顺序
判断一个字符串是否可以通过另一个字符串通过栈变换得到假设:源字符串:src 目标字符串:dst判断规则:src与dst的长度必须相等才能进行变换,否则不能变换的到首先定义两个指针p_src和p_dst分别指向src和dst的第一个字符先让p_src对应的元素入栈并进行p_src++,然后取栈顶元素与p_dst对应的元素相比较如果相等,p_dst++,并且栈顶元素出栈如果不相等,在p_src !=...原创 2018-04-26 20:38:40 · 530 阅读 · 0 评论 -
两个队列实现一个栈
原理:如果组成的栈中没元素,那么两个队列为空如果组成的栈有元素,就要时刻保证一个队列中有元素,另一个队列中没有元素栈的初始化:初始化两个队列即可栈的销毁:销毁两个队列即可入栈:有元素的队列入队列即可出栈:加入有元素的队列中有n个元素,把钱n-1个元素直接出队列,然后直接人另一个队列,把剩下的最后一个元素出队列即可取栈顶元素:加入有元素的队列中有n个元素,把钱n-1个元素直接出队列,然后直接人另一个...原创 2018-04-26 20:24:40 · 247 阅读 · 0 评论 -
两个栈实现一个队列
队列的特点是先进先出,也就是说,存进队列的顺序和从队列中取出的顺序是一样的栈的特点是后进先出,也就是说,存进栈内的顺序和从栈中去出的数据是相反的,入过用两个栈,第一个栈将数据反向,第二个栈又将第一个栈的数据反向,最后得到的序列与从队列中得到的序列一致,示意图如下:代码如下: 头文件:QueueByTwoStack.h#pragma once #include<stdio.h>...原创 2018-04-26 20:08:25 · 300 阅读 · 0 评论 -
数据结构—队列的实现(顺序表)
数据结构中的队列有“先进先出”的特点,意思是最先被存进队列中的数据,总是最先被取走一个队列只有初始化,销毁,入队列,出队列和取队首元素,这些限制往往使在操作数据时更安全,代码容易实现,出现BUG的机会就很少上图队列,如过进行了多次入队列和出队列,就会是head之前的空间浪费,如下图为了避免这种浪费空间的测操作,当每次head 和 tail 只要到达最后一个元素,操作完成就让他们回到对列的最前面,即...原创 2018-04-11 09:58:57 · 462 阅读 · 0 评论 -
数据结构—栈的实现(顺序表)
数据结构中的栈有“后进先出”的特点,意思是最后被存进栈中的数据,总是最早被取走一个栈只有初始化,销毁,入栈,出栈和取栈顶元素,这些限制往往使在操作数据时更安全,代码容易实现,出现BUG的机会就很少上图中,栈中有3个元素,栈顶元素是data3,如果是入栈操作则data4放入栈顶,此时栈中有四个元素,栈顶元素是data4,如果出栈,则data4被取出,栈顶元素变为data3,具体实现代码如下:头文件(...原创 2018-04-11 09:27:57 · 372 阅读 · 0 评论 -
最小栈
最小栈:有入栈,出栈,取栈顶元素,取出栈内的最小值的时间复杂度均为O(1);有两种实现方式:第一种:使用一个栈没入栈一个元素,都再次把最小值插入,所以每次入栈,其实要入两个元素,栈顶永远是最小值,取栈内最小值就是取栈顶元素,将9725入栈,出栈,取栈顶元素如下图:入栈过程:出栈:取栈顶元素:代码如下:头文件MinStack1.h#pragma once#define MinStackMaxSi...原创 2018-04-15 17:09:52 · 459 阅读 · 0 评论 -
数据结构—链表
实现链表的各种增删查改等操作,并附带一些题目:头文件(c文件中所要实现的内容):typedef char LinkType; typedef struct LinkNode { LinkType data; struct LinkNode* next; } LinkNode; /** * @brief 初始化链表 * * @param head */ void LinkLi...原创 2018-04-03 00:00:51 · 198 阅读 · 0 评论 -
数据结构—顺序表
顺序表,地址空间上连续的一段内存,本次用数组实现顺序表头文件:test.h#pragma once #define SeqListMaxSize 1000 //数组最大容量typedef char SeqType; //顺序表的元素类型typedef struct SeqList { SeqType data[SeqListMaxSize]; size_t siz...原创 2018-05-01 20:40:15 · 298 阅读 · 0 评论 -
数据结构—hash表
哈希表,是根据键值对(Key --- value)进行访问的数据结构。也就是说,它通过把key值映射到表中一个位置来访问记录,以加快查找的速度。给定表ht,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数f(key)为哈希(Hash) 函数。总结上面的所说: 若在Hash表中存放数据的是一个结构体...原创 2018-06-23 13:54:29 · 745 阅读 · 0 评论