自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 数据结构之邻接表及广度优先遍历

邻接表是图的一种最主要存储结构(相当于图的压缩存储),用来描述图上的每一个点。图的邻接表存储方法跟树的孩子链表示法相类似,是一种顺序分配和链式分配相结合的存储结构。如这个表头结点所对应的顶点存在相邻顶点,则把相邻顶点依次存放于表头结点所指向的单向链表中。表结点存放的是邻接顶点在数组中的索引。对于无向图来说,使用邻接表进行存储也会出现数据冗余,表头结点A所指链表中存在一个指向C的表结点的同时,表头结点C所指链表也会存在一个指向A的表结点。广度优先搜索遍历类似于树的按层次遍历,对于用邻接表做存储结构的图,从某个

2022-06-01 11:45:25 4424

原创 数据结构之图的遍历(C语言)

图是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为: G (V,E) ,其中,G 表示一个图,V 是图G中顶点的集合,E 是图G中边的集合。在图中需要注意的是,线性表中我们把数据元素叫元素,树中将数据元素叫结点, 在图中数据元素,我们则称之为顶点(V) 。本代码主要使用矩阵继续存储。 1、创建链队列2、队列的初始化3、检查队列是否为空4、入队5、出队6、创建图7、图的初始化8、创建遍历数组9、遍历数组的初始化10、深度遍历(递归)11、广度遍历(队列来实现)12、测试代码13、程序入口14、运行结

2022-06-01 10:58:25 1498

原创 数据结构之哈夫曼树(C语言)

一、哈夫曼树的概念给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。该代码的核心在于弄懂如何构建哈夫曼树和生成哈夫曼树编码。主要通过找出两个最小值开始作为最底端叶节点,由下到上构建出哈夫曼树。二、代码步骤1、定义二叉树和字符指针数组2、二叉树的初始化3、查找最小两个值的下标(min1)<>4、构建哈夫曼树.

2022-05-29 15:41:19 4653 4

原创 数据结构之N皇后问题(C语言)

一、N皇后问题的概念n 皇后问题,研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。 一个皇后可以向水平、垂直以及向斜对角方向移动,如果一个皇后出现在另一个皇后的同一行,同一列或者斜对角,那它就可以被这个皇后攻击。可以通过列举出在棋盘上所有的情况,然后判断每个组合是不是符合的条件。二、代码步骤1、对皇后位置对错的判断2、递归实现N皇后位置的排列3、定义N皇后的指针并初始化4、代码入口5、运行结果三、代码功能1、对皇后位置对错.

2022-05-28 10:09:26 4487

原创 数据结构之二叉树的构建与遍历(C语言)

一、二叉树的概念二叉树是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。二叉树特点是每个节点最多只能有两棵子树,且有左右之分。二叉树有四种遍历方式,分别为前序遍历、中序遍历、后序遍历和层次遍历 ,遍历的实现方式有两种, 递归实现和非递归实现 。二、代码步骤1、创建二叉树2、创建链队列3、链队列的初始化4、判断队列是否为空5、入队6、出队7、构造

2022-05-24 20:33:16 1978

原创 数据结构之压缩矩阵的转置(C语言)

一、压缩矩阵转置的概念压缩矩阵的转置就是将压缩矩阵的行和列交换,但矩阵压缩后我们不能再按原来的方式用n*m的遍历方式进行转置操作,实际的操作就是将转置前的每一列的非零元素记录下来,然后再计算对应的转置后的压缩矩阵每一行对应的首元素的首个相对地址,然后将转置前的第i列赋值给转置后的第i行二、代码步骤1、定义矩阵结构体2、初始化矩阵3、打印矩阵4、矩阵转置5、测试代码6、程序入口7、运行结果三、代码功能1、定义矩阵结构体/** * A triple for r

2022-05-20 17:03:48 462

原创 数据结构之二维数组与矩阵乘法(C语言)

一、二维数组与矩阵乘法的定义二维数组本质上是以数组作为数组元素的数组,即“数组的数组”,类型说明符 数组名[常量表达式][常量表达式]。二维数组又称为矩阵,行列数相等的矩阵称为方阵。对称矩阵a[i][j] = a[j][i],对角矩阵:n阶方阵主对角线外都是零元素。矩阵相乘最重要的方法是一般矩阵乘积。它只有在第一个矩阵的列数(column)和第二个矩阵的行数(row)相同时才有意义。一般单指矩阵乘积时,指的便是一般矩阵乘积。一个m×n的矩阵就是m×n个数排成m行n列的一个数阵。由于它把许多数据紧凑地

2022-05-20 11:23:41 3523

原创 数据结构之循环队列(C语言)

一、循环队列的定义循环队列是把顺序队列首尾相连,把存储队列元素的表从逻辑上看成一个环,成为循环队列。循环队列就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。二、代码功能1、创建循环队列2、循环队列的初始化3、循环队列元素的入队4、循环队列元素的出队5、循环队列的输出6、循环队列的测试7、程序入口8、运行结果三、循环队列的代码1、创建循环队列typedef struct CircleIntQueue{ i.

2022-05-17 20:39:11 3562

原创 数据结构之链队列(C语言)

一、链队列的概念链队列:使用链表实现的队列;具有队头指针和队尾指针,指示队列元素所在的位置。特点:1、只能队尾插入元素、在队头删除元素。2、先进先出的线性表,先进入的元素出队,后进入的元素才能出队。优点:3、相比普通的队列,元素出队时无需移动大量元素,只需移动头指针。4、可动态分配空间,不需要预先分配大量存储空间。二、代码功能1、创建单链表2、创建链队列3、初始化链队列4、链队列的输出5、链队列的元素的添加(入队)6、链队列元素的删除(出队).

2022-05-17 20:10:09 880

原创 数据结构之递归——汉诺塔问题(C语言)

一、递归的定义递归定义是数理逻辑和计算机科学用到的一种定义方式,使用被定义对象的自身来为其下定义(简单说就是自我复制的定义)。递归定义亦称归纳定义,一种实质定义,指用递归的方法给一个概念下的定义。(汉诺塔:是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。)二、代码功能1、.

2022-05-12 17:17:51 2073

原创 数据结构之累加的递归实现(C语言)

一、递归定义递归定义是数理逻辑和计算机科学用到的一种定义方式,使用被定义对象的自身来为其下定义(简单说就是自我复制的定义)。递归定义亦称归纳定义,一种实质定义,指用递归的方法给一个概念下的定义。递归图解:二、代码功能1、递归函数int addTo(int paraN) { int tempSum; printf("entering addTo(%d)\r\n", paraN); if (paraN <= 0) { printf(" return 0\r\.

2022-05-12 16:56:42 1563

原创 数据结构之栈的应用 -- 表达式求值(C++)

一、栈的定义栈作为一种数据结构 ,是一种只能在一端进行插入和删除操作的特殊线性表 。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。二、整体代码#include <iostream>#include <cstring>#include <algorithm>#include <stack>#include <unordered_map>

2022-05-10 22:31:22 644

原创 数据结构之栈的应用 -- 括号匹配(C语言)

一、栈的定义栈作为一种数据结构 ,是一种只能在一端进行插入和删除操作的特殊线性表 。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。二、代码功能1、定义栈2、栈的初始化3、输出栈4、放入元素5、删除元素6、测试放入和删除元素7、判断括号匹配8、测试括号匹配9、代码入口10、运行结果三、栈——括号匹配的代码1、定义栈typedef struct CharSta

2022-05-10 22:11:04 3484

原创 数据结构之多项式的加法(C语言)

多项式的加法为对单链表的进一步利用与延伸,此代码的核心部分在于怎么按顺序把两个多项式合并同类项相加。一、代码功能:1、链表的定义2、初始化链表3、打印链表4、打印节点5、链表加入值6、链表的多项式相加7、测试代码18、测试代码29、程序入口二、多项式加法的代码:1、链表的定义typedef struct LinkNode{ int coefficient; int exponent; struct LinkNode *next;...

2022-05-06 22:37:10 2118 1

原创 数据结构之静态链表

一、静态链表的定义用数组来存放元素 的 值和地址。 由于数组元素 的 个数一旦确定就不会改变,因而称这种 链表 为 静态链表 。二、代码功能1、创立静态链表节点2、创建静态链表3、初始化静态链表4、打印静态链表5、静态链表的插入6、静态链表的删除7、静态链表的测试8、程序入口9、运行结果三、静态链表代码1、创立静态链表节点typedef struct StaticLinkedNode{ char data; int next;} *NodeP

2022-05-03 21:12:44 292

原创 数据结构之双链表

一、双链表的定义: 双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。二、代码功能:1、...

2022-05-03 20:52:05 1570

原创 数据结构之单链表

一、单链表的定义: 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) +指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。二、代码功能:1.设置单链表2.初始化单链表3.打印单链表4.单链表的取值5.单链表的插入:6.单链表的删除:7.测试单链表的取值、删除、插入、打印8.程序入口9.运行结果三、单链表代码...

2022-04-29 19:03:52 299

原创 数据结构之线性表

线性表的定义: 线性表是最基本、最简单、也是最常用的一种数据结构。线性表(linear list)是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列。 线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的(注意,这句话只适用大部分线性表,而不是全部。比如,循环链表逻辑层次上也是一种线性表(存储层次上属于链式存储,但是把最后一个数据元素的尾指针指向了首位结点)。老师代码:#include <...

2022-04-25 23:26:31 193

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除