数据结构
文章平均质量分 61
FugLee
在地里面除草,边学 Java -_-
展开
-
排序算法(5)--归并排序
归并排序算法的使用原创 2022-07-13 19:58:50 · 240 阅读 · 0 评论 -
排序算法(4)--冒泡排序与快速排序
交换排序: 冒泡排序和快速排序原创 2022-07-09 11:08:19 · 290 阅读 · 4 评论 -
排序算法(3)--堆排序与直接选择排序
选择排序分为直接选择排序和堆排序原创 2022-07-04 19:09:02 · 192 阅读 · 0 评论 -
排序算法(2)--希尔排序
希尔排序的思想及过程原创 2022-06-30 16:46:53 · 246 阅读 · 2 评论 -
排序算法(1)--直接插入排序与折半插入排序
插入排序--直接插入排序和折半插入排序原创 2022-06-28 09:31:50 · 412 阅读 · 4 评论 -
八大基于比较的排序算法及三大基于非比较的排序算法总结
排序是历年考试常考, 面试常问的问题, 因此需要多加练习最基本的几种排序方式, 对于剩下的排序算法只需要理解即可.原创 2022-06-24 21:59:05 · 1231 阅读 · 1 评论 -
栈与队列的实现
一:栈(1)概念一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶。(2)栈的操作示意图1.1、2两个个数字的压栈过程栈的实现一般可以使用数组或者链表实现,相对而言数组的结构实现更优一些。因为数组在尾上插入数据的代价比较小。(3)进栈示意图(4)栈的代码实现#pragma once#in原创 2020-05-28 22:05:51 · 268 阅读 · 0 评论 -
C语言系列(8) --- C语言之堆的简单操作实现
一:堆的概念(1)定义如果有一个关键码的集合K = {k0,k1, k2,…,kn-1},把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,并满足:Ki <= K2i+1 且 Ki<= K2i+2 (Ki >= K2i+1 且 Ki >= K2i+2) i = 0,1,2…,则称为小堆(或大堆)。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。(2)性质1.堆中某个节点的值总是不大于或不小于其父节点的值;2.堆总是一棵完全二叉树。(3)小原创 2020-05-28 17:36:18 · 566 阅读 · 0 评论 -
C语言系列(7) --- C语言之链表的实现
一:链表的概念链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的二:链表的结构(1)单链表(2)带头结点的单链表(3)双向链表(4)循环单链表(5)双向循环链表注释:(1)无头单向非循环链表:结构简单,一般不会单独用来存数据。实际中更多是作为其他数据结构的子结构,如哈希桶、图的邻接表等等。(2)带头双向循环链表:结构最复杂,一般用在单独存储数据。实际中使用的链表数据结构,都是带头双向循环链表。另外这个结构虽然结构复杂,但是使用代原创 2020-05-21 14:35:02 · 1263 阅读 · 0 评论 -
C语言系列(1) --- C语言实现经典扫雷小游戏
(一)游戏简介游戏初始界面有两个选择,选项“1”为开始游戏,选项“0”为退出游戏;选择开始游戏之后将会打印出9*9的棋盘,此时系统已经为游戏设置了10个雷,输入坐标之后将会打印出此坐标周围八个位置有几个雷,如果踩到了雷,那么游戏结束,打印出所有雷的位置。(二)游戏实现1.初始化棋盘void InitBoard(char board[ROWS][COLS], int rows, int co...原创 2020-03-28 21:50:46 · 263 阅读 · 1 评论 -
C语言系列(3) --- C程序中结构体的内存对齐
一:为什么存在内存对齐1.平台原因(移植原因): 不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。2. 性能原因: 数据结构(尤其是栈)应该尽可能地在自然边界上对齐。 原因在于,为了访问未对齐的内存,处理器需要作两次内存访问;而对齐的内存访问仅需要一次访问。总的来说结构体的内存对齐是拿空间来换取时间的做法。二:结构体的内...原创 2020-04-17 21:35:33 · 173 阅读 · 0 评论 -
C语言系列(4) --- C语言动态内存管理
一:malloc函数和free函数(1)这个函数向内存申请一块连续可用的空间,并返回指向这块空间的指针。如果开辟成功,则返回一个指向开辟好空间的指针。如果开辟失败,则返回一个NULL指针,因此malloc的返回值一定要做检查。返回值的类型是 void* ,所以malloc函数并不知道开辟空间的类型,具体在使用的时候使用者自己来决定。如果参数 size为0,malloc的行为是标准是未定...原创 2020-04-19 22:08:44 · 141 阅读 · 0 评论 -
C语言系列(2) --- C语言模拟实现qsort(采用冒泡的方式),strcpy,strcat,strcmp等函数
(1)采用冒泡的方式模拟实现qsort简述回调函数:回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。模拟实现qsort函数源代码(采用冒泡的方式):#define _CRT_...原创 2020-04-13 22:09:33 · 292 阅读 · 0 评论 -
数据在内存中的存储
1.原码、反码、补码原码:直接将二进制按照正负数的形式翻译成二进制就可以。反码:将原码的符号位不变,其他位依次按位取反就可以得到了。补码:反码+1就得到补码。例如:-10的原码,反码,补码在计算机里面都是以补码的形式存在,正数的原、反、补码都相同。2.举个例子说明整型在内存中的存储:#include <stdio.h>int main(){ int a = 10;...原创 2020-04-08 21:05:17 · 182 阅读 · 0 评论