
C语言
文章平均质量分 63
加啊啊啊啊零
学习本没有捷径,学的久了,就有了自己的路
展开
-
排序算法合集1.0
目录冒泡排序(Bubble sorting)选择排序(Select sort)插入排序(Insert sort)希尔排序(Shell Sort)快速排序(Quick sort)归并排序(Merge sort)基数排序(Radix Sort)冒泡排序(Bubble sorting)冒泡排序算法的原理如下: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最..原创 2022-05-16 13:52:12 · 263 阅读 · 0 评论 -
堆栈的实现(C语言)
堆栈(stack)的基本概念堆栈是一种特殊的线性表,堆栈的数据元素及数据元素之间的逻辑关系和线性表完全相同,其差别是:线性表允许在任意位置插入和删除数据元素操作,而堆栈只允许在固定一端进行插入和删除数据元素操作。 堆栈中允许进行插入和删除数据元素操作的一端称为栈顶,另一端称为栈底。栈顶的当前位置是动态的,用于标记栈顶当前位置的变量称为栈顶指示器(或栈顶指针)。 堆栈的插入操作通常称为进栈或入栈,每次进栈的数据元素都放在原当前栈顶元素之前而成为新的栈顶元素。堆栈的删除操作通常称为出栈或退栈,每次出栈的原创 2021-09-15 21:32:44 · 2064 阅读 · 2 评论 -
C语言实现约瑟夫问题(链表、数学取模方式)
问题描述一堆猴子都有编号,编号是1,2,3 ...m,这群猴子(m个)按照1-m的顺序围坐一圈,从第K开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。单向循环链表处理用单向循环链表模拟猴子围成圈坐,如下图所示 当要编号为2的猴子要出圈时,操作如下:first指向当前要删除结点,helper指向要删除结点的后一个结点,同时将first赋值给tempfirst指向要删除结...原创 2021-09-10 11:09:13 · 345 阅读 · 0 评论 -
双向循环链表的实现(C语言)
双向链表的存储结构 在双向循环链表中,每个结点包括三个域,分别是数据域(data域)、指向后继结点的指针域(next域)和指向前驱结点的指针域(pre域)。双向循环链表结点结构和单链表相同,双向链表也有带头结点结构和不带头结点结构两种,带头结点结构的双向链表更为常见,故本篇讨论带头结点结构的双向循环链表。空链表非空链表双向循环链表的指针关系双向循环链表的指针关系p->next->pre = p;p->pre-...原创 2021-09-07 20:31:25 · 1129 阅读 · 0 评论 -
带头结点的单链表的几个应用(C语言实现)
目录查找单链表倒数第index个结点并显示出来单链表逆序(反转)单链表逆序打印(原始单链表不变)合并两个有序的单链表查找单链表倒数第index个结点并显示出来思路分析:编写一个函数接收head结点、index (index就是倒数第index个结点)1.先遍历的到链表总长度 size2.得到size后,再遍历一遍找到第(size - index)个结点,就是我们要找的倒数第index个结点3.没有找到就直接返回NULL#include <stdio....原创 2021-09-06 16:25:28 · 348 阅读 · 0 评论 -
带头结点的单链表的操作实现(C语言)
补充知识:链式存储结构存储线性表:把存储有数据元素的结点用指针域构造成链。指针:指向物理存储单元地址的变量。结点:一个由数据元素域及一个或若干个指针域组成的结构体。单链表的定义链式存储结构的线性表称为链表。根据指针域的不同和结点构造链的方法不同,链表主要有单链表、单循环链表和双循环链表三种。其中,单链表——构造链表的结点只有一个指向直接后继结点的指针域。单链表的表示:单链表中每个结点的结构单链表分为带头结点结构和不带头结点结构两种。我们把指向单链表的指...原创 2021-09-04 18:33:19 · 2594 阅读 · 0 评论 -
顺序循环队列的表示和实现(C语言)
顺序循环队列的基本原理为防止顺序队列的假溢出问题,把顺序队列所使用的存储空间构造成一个逻辑上首尾相连的循环队列。当rear和front达到maxSize - 1后,再前进一个位置就自动到0。利用高级程序设计语言int数据类型的求模(或称取余、取模)运算(%)来实现。顺序循环队列各状态的判断问题front:队头指针;rear:队尾指针;maxSize - 1:队列的最大容量front:指向队列的第一个元素,也就是说queue[front]就是队列的第一个元素。front的初始值为0。 rea原创 2021-09-03 11:13:37 · 805 阅读 · 0 评论 -
队列——数组模拟队列(C语言实现)
队列的基本概念 队列也是一种特殊的线性表,队列的数据元素及数据元素间的逻辑关系和线性表完全相同,其差别是:线性表允许在任何位置插入和删除数据元素,而队列只允许在其一端进行插入操作,在其另一端进行删除操作。 队列中,允许进行插入操作的一段成为队尾,允许进行删除操作的一段称为对头。对头和队尾分别由对头指示器(或称队头指针:front)和队尾指示器(或称队尾指针:rear)指示。队列的插入操作通常称为入队列,队列的删除操作通常称为出队列。 队列是一种先进先出的线...原创 2021-09-03 10:00:51 · 3538 阅读 · 1 评论 -
稀疏数组及转置稀疏数组实现(C语言)
稀疏矩阵定义:对一个m*n的矩阵,设s为矩阵元素的总和,有s=m*n,设t为矩阵中非零元素的总和,满足t<<s的矩阵成为稀疏矩阵。稀疏矩阵中每个非零元素及其对应的行下标和列下标构成一个三元组,稀疏矩阵中所有这样的三元组构成一个三元组线性表。稀疏矩阵的压缩存储结构主要有三元组顺序表和三元组链表两大类。其中,三元组链表中又包括一般链表、行指针数组的链表和行列指针的十字链表存储结构等。本篇介绍的是三元组顺序表的C语言实现。在以下代码解释中,二维数组等价于稀疏矩阵,稀疏矩阵等价于三元组顺原创 2021-09-02 15:51:08 · 873 阅读 · 0 评论