![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 82
Shang_Jianyu_ss
这个作者很懒,什么都没留下…
展开
-
【数据结构】八大排序——冒泡排序
八大排序中其他排序直接插入排序希尔排序选择排序文章目录前言冒泡排序原理优化代码实现前言冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,原创 2022-04-07 23:15:39 · 455 阅读 · 0 评论 -
【数据结构】八大排序——选择排序
八大排序中其他排序直接插入排序希尔排序文章目录前言选择排序原理代码实现前言选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。选择排序原理首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小原创 2022-04-07 22:37:32 · 1185 阅读 · 0 评论 -
【数据结构】八大排序——希尔排序
八大排序中其他排序直接插入排序文章目录1.发展历史2.基本思想3.代码实现1.发展历史希尔排序按其设计者希尔(Donald Shell)的名字命名,该算法由希尔在 1959 年所发表的论文“A high-speed sorting procedure” 中所描述。希尔排序是基于插入排序的以下两点性质而提出改进方法的:插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率。但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位。1961年,IBM 公司的女程序员 M原创 2022-04-06 23:17:49 · 576 阅读 · 0 评论 -
【数据结构】八大排序——直接插入排序
文章目录1.直接插入排序原理2.代码实现1.直接插入排序原理直接插入排序(Straight Insertion Sort)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表。开始时有序表中只包含1个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,将它插入到有序表中的适当位置,使之成为新的有序表,重复n-1次可完成排序过程。直接插入排序:将所有数据分为两个部分,一部分认为是有序的,一部分认为是无序的,每一次从无序部分取一个值放到我们有序部分,直到将无序部分全部取完。原创 2022-04-06 22:49:55 · 2467 阅读 · 0 评论 -
【数据结构】链队列
文章目录1.链队列2.链式队列的头文件与函数声明3.函数3.1初始化3.2入队3.3出队3.4获取队头元素值3.5判空3.6查找3.7获取有效元素个数3.8销毁4.链队列的源文件与函数实现1.链队列链式队列----用链表实现,链式队列就是一个操作受限的单向链表之前单链表结构体设计的时候,当时发现头节点所需要的成员变量(next域),有效节点里都有,所以我们当时单链表头节点直接借用别人有效数据节点的结构体设计所以我们之前常说头节点的数据域不使用,浪费掉。现在设计链式队列,就会发现头节点需要两个指针原创 2022-04-05 23:51:49 · 2465 阅读 · 0 评论 -
【数据结构】循环队列
文章目录1.队列2.循环队列3.循环队列头文件与函数声明4.函数4.1初始化4.2入队4.3出队4.4获取队头值4.5判空与判满4.6查找4.7获取队列有效长度4.8清空与销毁5.循环队列源文件与函数实现1.队列**队列:**先进先出的线性表,受到限制的,一端进行入队,一端进行出队。入队的一端叫做队尾,出队的一端叫做队头,队列中没有元素的话,叫做空队。2.循环队列循环队列就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。在循环队列结构中,当存储空间的最后一个位原创 2022-04-05 23:30:29 · 3195 阅读 · 1 评论 -
【数据结构】双向链表
双向链表原创 2022-04-05 22:45:27 · 2981 阅读 · 0 评论 -
【数据结构】循环链表
文章目录1.概念2.循环链表的头文件与函数声明3.函数实现3.1 购买节点3.2 初始化函数(重点)3.3 判空函数3.4 获取有效数据个数3.5 头插函数3.6尾插(重点)3.7 按位置插入3.8 头删3.9 尾删(重点)3.10 按位置删除节点3.11 查找3.12 按值删除3.13 销毁3.13.1 销毁13.13.2 销毁24.循环链表的源文件与函数实现1.概念循环链表:和单链表唯一的区别:尾节点保留着头节点的地址循环链表的特点:1. 尾节点可以找到头节点2. 头节点不能找到尾节点3.原创 2022-04-02 15:02:40 · 7546 阅读 · 1 评论 -
【数据结构】栈 (顺序栈+链栈)
文章目录一、栈的概念二、顺序栈顺序栈的头文件与函数声明1.初始化顺序栈2.获取有效值个数3.判空与判满3.1判空3.2判满4.扩容5.入栈6.出栈7.获取栈顶元素8.查找9.清空与销毁9.1清空9.2销毁顺序栈源文件与函数实现三、链栈链栈的头文件及函数声明1.初始化2.入栈3.出栈4.判空5.查找6.销毁6.1第一种销毁方法6.2第二种销毁方式链栈的源文件与函数实现一、栈的概念栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后原创 2022-04-03 14:30:41 · 220 阅读 · 0 评论 -
【数据结构】带头结点的单链表
单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的原创 2022-04-01 18:30:25 · 6904 阅读 · 0 评论 -
【数据结构】不定长顺序表
不定长顺序表,顾名思义,就是顺序表的长度不定,可以存放任意多个数据。与定长顺序表相比,它可以在顺序表长度不够用时自己进行扩容。那么在设计不定长的顺序表时,存放数据的数组就不能是固定长度的了,这时我们可以考虑用动态数组来代替,进行扩容时就可以动态申请内存,将数据存放到动态数组中。同时加入一个变量 list_size 来存放总的格子数(总容量)。结构如图:结构体声明如下:typedef int ELEM_TYPE;#define MAX_SIZE 10typedef struct Dsql原创 2022-04-01 15:58:54 · 562 阅读 · 0 评论