![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 51
yummy_alice
这个作者很懒,什么都没留下…
展开
-
实现基于静态数组的顺序表
实现基于静态数组的顺序表的以下基本操作: 1.打印 2. 初始化 3. 尾插 4. 尾删 5 .头插 6. 头删 7. 在任意位置插入元素 8. 在任意位置删除元素 9.根据脚标查找相应的元素 10.修改任意位置元素 1...原创 2018-03-12 11:25:48 · 198 阅读 · 0 评论 -
数据结构之二叉搜索树
二叉搜素树,又名二叉查找树,二叉排序树。 它具有以下特点: 1、若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 2、若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 3、它的左、右子树也分别为二叉排序树。 下面我们实现以下二叉搜索树的一些基本操作: 1、初始化 2、销毁 3、插入 4、删除 5、查找 ...原创 2018-06-06 17:27:03 · 173 阅读 · 0 评论 -
数据结构之堆的基本操作
今天我们来说一说堆,堆是一个完全二叉树,堆分大堆和小堆。小堆: 这个树的根节点是这个树中的最小的元素 对于任意一个子树来说, 子树的根节点, 小于左右孩子节点的值. 大堆: 这个树的根节点是这个树种的最大元素 对于任意一个子树来说, 子树的根节点, 大于左右孩子节点的值. 下面我们画图来说明一下。下面我们实现堆的基本操作1、定义一个堆 我们定义一个堆的结构体,将堆...原创 2018-05-26 14:20:51 · 416 阅读 · 0 评论 -
数据结构之哈希变形(位图)
Bitmap.h#pragma once#include <stdio.h>#include <stdlib.h>#include <string.h>#include <stdint.h>typedef uint64_t BitmapType;typedef struct Bitmap{ BitmapType* data;...原创 2018-05-25 10:04:23 · 167 阅读 · 0 评论 -
迷宫
void MazeInit(Maze* maze)//初始化地图{ if(maze == NULL) { return; } int map[ROW][COL] = { {0,1,0,0,0,0}, {0,1,1,1,0,0}, {0,1,0,1,1,0}, {1,1,0,0,1,0}, {0,0,0,0,0,0}, {0,0...原创 2018-04-27 09:03:46 · 164 阅读 · 0 评论 -
二叉树
一、二叉树的概念 一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵分别称为左子树和右子树组成。二、二叉树的特点 1、每个结点最多有两棵子树,即二叉树不存在度大于2的结点。 2、二叉树的子树有左右之分,其子树的次序不能颠倒。三、二叉树的表示方法 1、双亲表示法 2、孩子表示法 3、双亲孩子表示法 4、孩子兄弟表示法四、二叉树的遍历 遵循某种次序,...原创 2018-04-26 19:55:38 · 180 阅读 · 0 评论 -
顺序队列
SeqQueue.h#pragma once#include <stdio.h>#include <stddef.h>#define SQUEUEMAX 1000typedef char SeqQueueType;typedef struct SeqQueue{ SeqQueueType data[SQUEUEMAX]; size_t he...原创 2018-04-20 15:32:16 · 89 阅读 · 0 评论 -
顺序栈
SeqStack.h#pragma once#include <stdio.h>#include <stddef.h>#include <stdlib.h>typedef char SeqStackType;typedef struct SeqStack{ SeqStackType* data; size_t capacity;/...原创 2018-04-20 15:23:43 · 151 阅读 · 0 评论 -
栈和队列笔试题
1、最小栈#include <stdio.h>#include "seqstack.h"typedef struct Min_SeqStack { SeqStack stack; }Min_SeqStack;void Min_SeqStackPrint(Min_SeqStack* s){ if(s == NULL) { return; } ...原创 2018-04-22 21:24:27 · 200 阅读 · 0 评论 -
实现一个有头结点有环的双链表
在之前的博客里我们讲到了不带头节点不带环的单向链表,今天我们来实现一个有头结点有环的双向链表。 我们首先设置一个头结点,这个头结点的数据是无意义的,我们再设置一个环,让这个链表的尾巴指向头称为一个带环链表。相比于之前的单向链表,这次我们多加了一个prev指针,成为双向链表。如图就是我们的有头有环的双向链表。画的太丑了.... 话不多说,直...原创 2018-04-06 16:27:41 · 228 阅读 · 0 评论 -
完成单链表的后续操作(实现一个无头无环的单链表)
之前我们完成了顺序表的一些操作,今天我们就来说一说链表。 链表是一种常见的重要的数据结构。它是动态地进行存储分配的一种结构。它可以根据需要开辟内存单元。链表有一个“头指针”变量,以head表示,它存放一个地址。该地址指向一个元素。链表中每一个元素称为“结点”,每个结点都应包括两个部分:一为用户需要用的实际数据,二为下一个结点的地址。因此,head指向第一个元素:第一...原创 2018-03-27 19:55:25 · 218 阅读 · 0 评论 -
常见链表面试题
头文件以及定义的节点都在上一篇的单链表功能实现里面有写逆序打印单链表递归方式简洁明了void linklist_reverseprintf(linklist *head){ if(head == NULL) { return;//空链表 } linklist_reverseprint(head->next); pr...原创 2018-04-09 16:21:06 · 124 阅读 · 0 评论 -
排序算法时间复杂度、空间复杂度、稳定性比较
排序算法分类排序算法比较表格填空 **注: 1 归并排序可以通过手摇算法将空间复杂度降到O(1),但是时间复杂度会提高。 2 基数排序时间复杂度为O(N*M),其中N为数据个数,M为数据位数。**辅助记忆原理理解1 冒泡排序1.1 过程冒泡排序从小到大排序:一开始交换的区间为0~N-1,将第1个数和第2个数进行比较,前面大于后面,交换两...转载 2018-08-13 15:41:47 · 282 阅读 · 2 评论