
数据结构与算法
文章平均质量分 73
数据结构与算法学习笔记
FriendshipT
学无止境!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构与算法:二叉树专题
Python、数据结构与算法、栈、队列、二叉树、中序遍历、层次遍历原创 2023-03-04 22:49:58 · 814 阅读 · 0 评论 -
Python实现常见的排序算法
Python、直接插入排序、希尔排序、冒泡排序、快速排序、简单选择排序、堆排序、归并排序、基数排序原创 2022-03-24 21:08:08 · 2303 阅读 · 1 评论 -
数据结构与算法之线性表的应用:选首领
数据结构与算法之线性表的应用:选首领题目描述算法步骤创建一个单循环链表(线性表)C语言实现选首领C语言实现完整代码输出结果题目描述题目:选首领。N个游戏者围成一圈,从第一个人开始顺序报数1,2,3。凡报到3者退出圈子,最后留在圈中的人为首领(赢家)。算法步骤创建一个单循环链表(线性表)使用头插法创建循环链表,以5个游戏者(结点)举例,如下图。C语言实现LinkList create_list(int n)/*创建一个结点数为n的单循环链表,返回值为游戏编号为1的结点的指针*/{原创 2021-05-03 16:33:01 · 290 阅读 · 0 评论 -
数据结构与算法之队列
数据结构与算法之队列简介队列结构体队列基本运算初始化队列判断是否为空队列入队出队完整代码输出结果简介队列是一种先进先出(FIFO)的线性表,特殊之处在于它只允许在表的前端(Front)进行删除操作,而在表的后端(Rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列结构体typedef struct { int *base; /*循环队列的存储空间首地址*/ int front,rear;/*队头、队尾指针*/原创 2021-05-04 21:01:25 · 290 阅读 · 1 评论 -
数据结构与算法之串的基本运算
数据结构与算法之串的基本运算前提条件简介的基本运算求串长串拷贝串比较完整代码输出结果前提条件熟悉C语言与指针熟悉数据结构与算法简介数据结构中提到的串,即字符串,由 n 个字符组成的一个整体( n >= 0 )。这 n 个字符可以由字母、数字或者其他字符组成。的基本运算求串长int strlen(char *s)/*求串长*//*计算给定串除特殊字符'\0'之外的字符数目*/{ int n = 0; while (s[n]!='\0') {原创 2021-05-15 15:27:44 · 1263 阅读 · 0 评论 -
数据结构与算法之串的朴素模式匹配
数据结构与算法之串的朴素模式匹配前提条件简介朴素模式匹配算法完整代码输出结果前提条件熟悉C语言与指针熟悉数据结构与算法简介串的模式匹配也称为子串的定位操作。设有主串S和子串T,如果在主串S中找到一个与子串T相等的子串,则返回串T的第一个字符在串S中的位置。其中S称为目标串,子串T又称为模式串。朴素模式匹配的基本思想是:从主串S=“S(0) S1 …S(n-1)”的第pos个字符开始与子串T=“T(0) T1 …T(n-1)”的第一个字符比较,如果相等则继续比较后一个字符;否则从主串的原创 2021-05-16 23:03:56 · 1103 阅读 · 0 评论 -
数据结构与算法之哈希表
数据结构与算法之哈希表前提条件基本概念构造方法直接定址法除留余数法数字分析法折叠法平方取中法处理冲突的方法开放定址法线性探测法二次探测法链地址法链地址法哈希表的实现链地址哈希表的类型定义链地址哈希表的接口(函数的声明)链地址哈希表的初始化链地址哈希表的查找链地址哈希表的插入哈希表的查找性能平均查找长度线性探测法二次探测法链地址法装填因子装填因子与平均查找长度链地址法与开放定址法完美哈希函数参考文献前提条件熟悉C语言与指针熟悉数据结构与算法基本概念在查找过程中,最理想的情况是可以不进行记原创 2021-09-14 23:11:11 · 2776 阅读 · 0 评论 -
数据结构与算法之递归
数据结构与算法之递归前提条件简介递归算法求n!求整数数组最大值完整代码输出结果前提条件熟悉C语言与指针熟悉数据结构与算法简介-程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无原创 2021-05-14 22:22:09 · 1013 阅读 · 1 评论 -
数据结构与算法之广义表
数据结构与算法之广义表前提条件广义表的基本概念广义表的存储结构存储结构类型定义广义表的分解方式方式一:按表头和表尾分解方式二:按元素分解广义表的基本操作求广义表深度在表尾添加元素参考文献前提条件熟悉C语言与指针熟悉数据结构与算法广义表的基本概念将线性表的元素定义进行扩展,每个元素也可以是一个表,得到一种“表中有表”的递归数据结构,称为广义表。例如,在常用的操作系统中,文件系统(File System)的组织结构是一个典型的广义表应用。在某个文件夹下,既可能存在文件,也可能存在文件夹原创 2021-09-16 21:38:18 · 958 阅读 · 0 评论 -
数据结构与算法之二分查找
数据结构与算法之二分查找前提条件简介算法函数二分查找的正常算法二分查找的递归算法完整代码输出结果前提条件熟悉C语言与指针熟悉数据结构与算法简介二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。算法函数二分查找的正常算法int Bsearch_1(int r[],int low,int high,int key)/*二分查找的算法*/{ /*若找到则返回该元素坐标,转载 2021-05-10 13:18:00 · 178 阅读 · 0 评论 -
数据结构与算法之二叉查找树
数据结构与算法之二叉查找树前提条件简介二叉查找树基本操作二叉查找树的查找算法二叉查找树的插入算法完整代码输出结果前提条件熟悉C语言与指针熟悉数据结构与算法简介二叉查找树(Binary Search Tree),又称二叉排序树(Binary Sort Tree),亦称二叉搜索树。是数据结构中的一类。在一般情况下,查询效率比链表结构要高。最重要的性质(1)若左子树不空,则左子树上所有结点的值均小于或等于它的根结点的值;(2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;原创 2021-05-10 19:43:07 · 213 阅读 · 0 评论 -
数据结构与算法之二叉树
数据结构与算法之二叉树前提条件简介二叉树结构体二叉树遍历算法前序遍历算法中序遍历算法后序遍历算法完整代码输出结果前提条件熟悉C语言与指针熟悉数据结构与算法简介二叉树(Binary tree)是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树形式,二叉树特点是每个结点最多只能有两棵子树,且有左右之分 。二叉树是n个有限元素的集合,该集合或者为空、或者由一个称为根(root)的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成,是有序树。当集合为空时,称该二叉树为原创 2021-05-05 22:23:34 · 441 阅读 · 0 评论 -
数据结构与算法之图
数据结构与算法之图前提条件简介图结构体图基本操作用邻接链表创建图深度优先搜索算法广度优先搜索算法完整代码输出结果前提条件熟悉C语言与指针熟悉数据结构与算法简介图(Graph)结构是一种非线性的数据结构,图在实际生活中有很多例子,比如交通运输网,地铁网络,社交网络,计算机中的状态执行(自动机)等等都可以抽象成图结构。图结构比树结构复杂的非线性结构。如下图所示。图结构体#define MaxN 50 /*图中顶点数目最大值*/typedef struct ArcNode{原创 2021-05-09 22:46:16 · 226 阅读 · 0 评论 -
数据结构与算法之图的应用
数据结构与算法学习笔记8:图图的定义和基本概念图的实现数组〈邻接矩阵〉邻接表图的遍历图的典型应用最小生成树最短路径拓扑排序关键路径图的定义和基本概念图的实现数组〈邻接矩阵〉邻接表图的遍历图的典型应用最小生成树最短路径拓扑排序关键路径...原创 2021-12-28 00:01:02 · 2789 阅读 · 5 评论 -
数据结构与算法之冒泡排序
数据结构与算法之冒泡排序前提条件简介冒泡排序算法完整代码输出结果前提条件熟悉C语言与指针熟悉数据结构与算法简介冒泡排序(Bubble Sort),是一种简单且稳定的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。冒泡排序算法void bubbleSort(int data[],int n)/*冒泡排序*/{ int i,j,tag=1;原创 2021-05-11 22:06:41 · 238 阅读 · 1 评论 -
数据结构与算法之堆排序
数据结构与算法之堆排序前提条件基本概念参考文献前提条件熟悉C语言与指针熟悉数据结构与算法基本概念参考文献[1] 严蔚敏,吴伟民. 数据结构(C语言版). 北京: 清华大学出版社,2020[2] 严蔚敏,李冬梅,吴伟民. 数据结构(C语言版)(第二版). 北京: 人民邮电出版社,2021[3] 吴伟民,李小妹,刘添添,黄剑锋,苏庆,林志毅,李杨.数据结构. 北京:高等教育出版社,2017[4] 王道论坛. 2022数据结构考研复习指导. 北京:电子工业出版社,2021...原创 2021-09-13 23:36:25 · 600 阅读 · 1 评论 -
数据结构与算法之希尔排序
数据结构与算法之希尔排序前提条件简介希尔排序算法完整代码输出结果前提条件熟悉C语言与指针熟悉数据结构与算法简介希尔排序(Shell’s Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因 D.L.Shell 于 1959 年提出而得名。希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减原创 2021-05-13 20:29:26 · 259 阅读 · 1 评论 -
数据结构与算法之直接插入排序
数据结构与算法之直接插入排序前提条件简介直接插入排序算法完整代码输出结果前提条件熟悉C语言与指针熟悉数据结构与算法简介直接插入排序(Straight Insertion Sort)是一种最简单的排序方法,其基本操作是将一条记录插入到已排好的有序表中,从而得到一个新的、记录数量增1的有序表。直接插入排序算法void insertSort(int data[],int n)/*直接插入排序*/{ int i,j; int temp; for ( i = 1;原创 2021-05-11 16:10:14 · 201 阅读 · 0 评论 -
数据结构与算法之快速排序
数据结构与算法之快速排序前提条件简介快速排序算法完整代码输出结果前提条件熟悉C语言与指针熟悉数据结构与算法简介快速排序(Quicksort)是对冒泡排序算法的一种改进。 快速排序由C. A. R. Hoare在1960年提出。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快速排序算法int partition(i原创 2021-05-13 21:58:18 · 170 阅读 · 0 评论 -
数据结构与算法之归并排序
数据结构与算法之归并排序前提条件简介归并排序算法完整代码输出结果前提条件熟悉C语言与指针熟悉数据结构与算法简介归并排序(Merge Sort)是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并排序是稳定的排序.时间复杂度O(nlogn)O(n log n)O(nlogn)原创 2021-05-14 21:34:45 · 214 阅读 · 0 评论 -
数据结构与算法之简单选择排序
数据结构与算法之简单选择排序前提条件简介简单选择排序算法完整代码输出结果前提条件熟悉C语言与指针熟悉数据结构与算法简介简单选择排序是一种简单但不稳定的排序算法。最好情况下,即待排序记录初始状态就已经是升序排列了,则不需要移动记录。最坏情况下,即待排序记录初始状态是按第一条记录最大,之后的记录从大到小顺序排列,则需要移动记录的次数最多为3(n−1)3(n-1)3(n−1)。简单选择排序过程中需要进行的比较次数与初始状态下待排序的记录序列的排列情况无关。当i=1i=1i=1时,需进原创 2021-05-11 22:37:03 · 455 阅读 · 0 评论 -
数据结构习题笔记一绪论
数据结构习题笔记一数据结构基本概念习题答案算法习题答案数据结构基本概念习题答案算法习题答案原创 2021-06-25 21:18:40 · 230 阅读 · 0 评论 -
从真题中理解循环链表
从真题中理解循环链表题目概述题目解答相关知识参考文献题目概述某仓库用一个带头结点的循环链表L存储各种货物的代码、价格和数量。链表的类型定义如下:typedef struct Goods{ int code;//代码 float price; //价格 int num;//数量 Goods *next;}Goods,*GoodsList;试写一个算法void f(GoodsList L, GoodsList &Lc, int c),将其中代码code大于c的货物从链表L删除,并将删原创 2021-09-06 22:09:28 · 693 阅读 · 0 评论 -
从真题中理解循环队列
从真题中理解循环队列题目概述题目分析题目解答完整代码参考文献题目概述如果希望循环队列中的元素都能得到利用,则可设置一个标志域tag,并以tag值为0或1来区分尾指针和头指针相同时的队列状态是“空”还是“满”,其数据结构如下:typedef struct { ElemType *elem; int front; int rear; int tag; int maxSize;}CTagQueue;1)写出此结构对应的队空判断条件表达式。2)试编写与此结构对应的入队列算法 Status E原创 2021-09-02 22:22:55 · 649 阅读 · 0 评论 -
从真题中理解信道复用技术、最优二叉树(Huffman Tree)
从真题中理解信道复用技术题目概述题目分析题目解答参考文献题目概述为共享信道,常会使用信道复用技术。同时为了减少信道负担,会采用压缩编码技术。据此,请对下列问题进行作答:1请分析同步时分复用与异步时分复用的区别2)请分析频分复用与波分复用的关联;3)现有一个由5个不同符号组成的30个符号的字符串LBABACACADADABBCBABEBEDDABEEEBB.请采用树形结构的最优压缩编码技术对L进行编码;4)并计算压缩后的平均码长与压缩比的实际值。题目分析题目解答参考文献[1] 谢希仁.原创 2021-09-02 21:12:33 · 1112 阅读 · 1 评论