自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 图的邻接矩阵存储,深度优先遍历(C语言)

内容: 采用邻接矩阵存储图,进行图的深度优先搜索并输出结果。1.算法分析: 整个程序分为两部分,第一部分为邻接矩阵存储图,第二部分为图的优先搜索。将两个部分的算法做一个简单的分析即可。 第一部分,邻接矩阵存储图,因为顶点和顶点之间的关系直接合在一起存储比较困难,所以我们可以使用一维数组来存储顶点信息,用二维数组来存储边的信息。假设图G=(V,E)有n个确定的顶点,即V={V0,V1,…,V(n-1)},则表示G中各顶点相邻关系为一个n*n的矩阵,矩阵...

2021-11-28 22:05:52 10255 9

原创 电文的编码和译码,哈夫曼编码译码(C语言)

内容: 从键盘接收一串电文字符,输出对应的Huffman(哈夫曼)编码,同时,能翻译由Huffman编码生成的代码串,输出对应的电文字符串。设计要求: (1)构造一棵Huffman树; (2)实现Huffman编码,并用Huffman编码生成的代码串进行译码; (3)程序中字符串和权值是可变的,实现程序的灵活性。步骤:1.算法分析: 在电报通信中,电文是以二进制代码传送的。在发送时,需要将电文中的字符转换成二进制代码......

2021-11-26 22:04:59 9379 2

原创 二叉链表求度为1的结点数目的算法(C语言)

内容: 若用二叉链表作为二叉树的存储表示,设计算法求二叉树中度为1的结点的个数。步骤:1.算法分析: 所谓的二叉树的度,就是指结点所拥有的子树的个数,所以二叉树中度的取值可为0,1,2。当然,题目中度为1的点就是指该结点只有一个左孩子或者只有一个右孩子。而二叉链表的存储就是设计一个结点,该结点至少包括数据域、左孩子域和右孩子域。该结构可用如下图表示: ...

2021-11-16 19:31:02 10040 1

原创 二叉树遍历的非递归实现(C语言)

内容: 编写程序,实现下述功能,并上机调试通过 (1)按中序顺序建立一棵二叉树; (2)用非递归方式遍历二叉树(先序),输出遍历序列。【提示】采用二叉链表做存储结构,建立二叉树。借助于栈结构来实现二叉树遍历的非递归算法。步骤:1.算法分析: 根据题目需求,可知整个程序需要两个比较大的板块,第一个是要根据中序顺序建立一个二叉树,第二个是最重要的也是核心的是用非递归先序方式遍历二叉树。 首先来看第一步,要想完成第一步,首先需要了解到无论是扩展二...

2021-11-14 21:34:53 5512 1

原创 采用顺序结构存储串,设计实现求串S和串T的一个最长公共子串的算法(C语言)

内容: 采用顺序结构存储串,设计实现求串S和串T的一个最长公共子串的算法。步骤:1.算法分析: 直观看来,这个问题与KMP算法有些类似,但是仔细看来还是有差别的,而且这个题目要求使用顺序结构完成算法,所以还是需要仔细分析,因为是要求最长公共子串,而在比对的过程中,可能会出现多个子串,所以需要设置一个计数器,记下来每一步的最大公共串数目,并且和前面的最大数目比较,若大于前面的,则保持不变,若小于前面的,则将前者的大小赋值给计数器。 对于两个串,我们可以分别设...

2021-10-31 18:18:44 3420 1

原创 用三元组实现稀疏矩阵的基本操作(C语言)

内容: 编写程序使用三元组表实现稀疏矩阵的按列转置操作。步骤:1.算法分析: 进行程序设计前,要对稀疏矩阵的一些知识进行必要的解释。设m*n矩阵中有t个非零元素且t<<m*n,这样的矩阵称为稀疏矩阵。可以看出,稀疏矩阵的非零元素是很少的,所以如果将稀疏矩阵进行常规存储会存在浪费大量内存的现象,而且在很多科学计算中,常常会遇到很多阶数很高的的大型稀疏矩阵。 正是因为上述原因,所以我们采用如下方法存储:将非零元素所在的行、列以及它的值构成一个三元组(...

2021-10-31 15:01:51 9257

原创 KMP算法简单实现(C语言)

内容: 求一个字符串在另一个字符串中第一次出现的位置。要求:利用键盘输入两个字符串,一个设定为主串,另一个设定为子串,对这两个字符串应用KMP算法,求出子串在主串中第一次出现的位置。步骤:1.算法分析: 要想实现KMP算法,需要至少两个比较大的步骤,第一步是求取next数组的值,接下来利用next数组的值在与主串进行比较。大概分为这两个过程,但是最为主要的还是next数组的求解,这才是整个KMP算法的核心。相较于传统的暴力解法,KMP算法中的指针不回溯,大大的节省了比较的...

2021-10-31 10:44:26 4183

原创 假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(算法)

内容: 假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(注意不设头指针),试编写相应的置空队、判空对、入队和出队等算法。步骤:1.算法分析: 要写出置空队、判空队、入队和出队的算法之前,需要先定义链队结构。其中,首先需要定义结点类型,而且只设置一个指向队尾元素的指针。 定义好链队结构之后,先写置空队的算法。所谓置空队,就是使头结点成为队尾元素,将队尾指针指向头结点。但是这里可能会出现一个意外情况,就是队中元素非空,所以接下来需要将队中...

2021-10-27 19:06:50 15852 6

原创 两个多项式的相加操作 C语言(链式存储结构)

内容: 完成两个多项式的相加操作:已知有两个多项式P(x),Q(x),设计算法实现P(x)+Q(x)运算。而且对加法运算不重新开辟存储空间。要求用链式存储结构。 例如:P(x)=5x^3+2x+1,Q(x)=3x^3+x^2-2x-3,其计算输出结果为:8x^3+1x^2-2.相减操作,以上述为例,则其输出结果为:2x^3-x^2-4x-2步骤:1.问题分析和算法设计: 多项式加法:本题的需要求出两个多项式的和,因此需要先使用Init()来初始化一个...

2021-10-23 22:44:29 7562 2

原创 回文的判定C语言(栈实现),Java简单实现

内容: 回文是指正读和反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。试写一个算法判定给定的字符向量是否为回文。1.算法分析: 回文如上述所言,是指正读和反读均相同的字符序列。所以要判断一串字符串是不是回文,就要把字符串逆序,然后与原来的字符串作比较,若二者相同,则说明是回文。 针对这个问题,我们可以采用栈来解决这个问题,因为栈具有先进后出的特性,我们只需要将字符入栈,随后再进行出栈,和原本的字符串相同位对比即可。若二者相同...

2021-10-23 17:17:12 3230

原创 N皇后问题(C语言)

内容: N皇后问题应如何完成。即在N*N的棋盘上摆放N个皇后,使其不在同一列,同一行,也不在同一条斜线上。即可成为该问题的一个解。步骤:1.算法分析: 直观的做法是暴力枚举将N个皇后放置在N*N的棋盘上的所有可能的情况,并对每一种情况判断是否满足皇后彼此之间不相互攻击。但是暴力枚举的时间复杂度是非常高的,因此必须利用限制条件加以优化。 显然,每个皇后必须位于不同行和不同列,因此将N个皇后放置在N*N的棋盘上,一定是每一行有且仅有一个皇后,每一列有且仅有一个皇后...

2021-10-16 21:49:25 2371

原创 八皇后问题分析及解决(C语言)

内容: 八皇后问题是一个古老而著名的问题,是回溯算法的典型例题。该问题是19世纪著名的数学家高斯于1850年提出的:在8*8格的国际象棋棋盘上,安放八个皇后,要求没有一个皇后能够“吃掉”任何其他一个皇后,即任意两个皇后都不能处于同一行、同一列或者同一条对角线上,这样的格局称为问题的一个解。写一个程序求出所有解。 高斯认为有76种摆法。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法得出92种摆法的结论。步骤:1.算法分析: ...

2021-10-16 18:47:26 4541

原创 将十进制有理数转化为m进制数(C语言实现)

内容:若将十进制有理数转换为r进制的数,应如何实现。步骤:1.算法分析: 进行算法分析前,首先需要了解一些进制转换的知识,十进制整数转换二制是采用“除2取余,逆序输出”的方法,即辗转相除法。但是有理数不止包含整数,也包含小数,小数的转换与整数略有不同。 那么怎么利用辗转相除法进行整数进制转化呢?这里以789.8125为例进行二进制转换: 因为整数和小数的转化方法略有不同,所以将789.8125分开处理,先处理整数部分: 789 / ...

2021-10-16 16:26:27 1157 3

原创 十进制整数num转换为m进制,链栈实现(C语言)

内容: 将十进制整数num转换为r进制数,其转换方法为辗转相除法。要求用链栈实现。步骤:1.算法分析:进行算法分析前,首先需要了解辗转相除法。欧几里得算法又称辗转相除法,是指用于计算两个非负数啊,b的最大公约数。计算公式gcd(a,b) = gcd(b,a mod b)。假如需要求 1997 和 615 两个正整数的最大公约数,利用辗转相除法,是这样进行的:1997 / 615 = 3 (余 152)615 / 152 = 4 (余 7)152 / 7 = 21...

2021-10-16 15:19:08 827 1

空空如也

空空如也

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

TA关注的人

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