数据结构
执笔抒情Li
这个作者很懒,什么都没留下…
展开
-
回溯算法解决八皇问题
回溯算法解决八皇问题`八皇后问题是使用回溯算法解决的典型案例。算法的解决思路是:从棋盘的第一行开始,从第一个位置开始,依次判断当前位置是否能够放置皇后,判断的依据为:同该行之前的所有行中皇后的所在位置进行比较,如果在同一列,或者在同一条斜线上(斜线有两条,为正方形的两个对角线),都不符合要求,继续检验后序的位置。如果该行所有位置都不符合要求,则回溯到前一行,改变皇后的位置,继续试探。如果试探到最后一行,所有皇后摆放完毕,则直接打印出 8*8的棋盘。最后一定要记得将棋盘恢复原样,避免影响下一次摆放原创 2021-03-31 22:07:52 · 138 阅读 · 0 评论 -
数据结构实验之图的邻接表存储及图的遍历(广度优先和深度优先)
前言建立图的邻接表存储结构,并以以0结点为起点实现上述图的深度优先和广度优先遍历算法;邻接表的建立:邻接表存储图的实现方式是,给图中的各个顶点独自建立一个链表,用节点存储该顶点,用链表中其他节点存储各自的邻接点。#include<iostream>using namespace std;#define MAX_VERTEX_NUM 20//最大顶点个数#define VertexType int//顶点数据的类型#define InfoType int//图中弧或者边包含原创 2020-12-16 23:40:14 · 5011 阅读 · 1 评论 -
哈夫曼编码(数据结构实验)
前言哈夫曼编码又称最优树,是一种典型的贪心算法,这种编码方式最大的优点就是用最少的字符包含最多的信息。哈夫曼编码是一种前缀编码,或者称非前缀编码,这种编码的特点是没有任何字是其他码的前缀。步骤1、创建一个优先级队列当然不一定要用优先级队列,也可以用普通数组代替,相比优先队列,普通数组在程序中要每次都比较节点权重的大小2、构建哈夫曼树对于给定的有各自权值的 n 个结点;在 n 个权值中选出两个最小的权值,对应的两个结点组成一个新的二叉树,且新二叉树的根结点的权值为左右孩子权值的和;在原有的原创 2020-12-09 16:03:39 · 2326 阅读 · 6 评论 -
数据结构之递归的巨大缺陷
数据结构之递归的巨大缺陷一、栈?二、递归函数的调用总结 递归是解决阶乘以及斐波那契额数等 一种很好的技巧,结构简单容易理解,但是其存在巨大的缺陷,就是内存的开销。一、栈?什么是栈,在内存当中它是专门用来给函数分配内存的,每次调用函数,都会将相关数据压入栈中,包括局部变量、局部数组、形参、寄存器、冗余数据等。对每个线程来说,栈能使用的内存是有限的,如果程序使用栈内存超出最大值就会发生溢出,程序就会崩溃。这里大家可以去了解一下c++程序运行时的内存结构,能帮助你写出更有效率的代码。二、递归函数.原创 2020-11-24 14:35:17 · 523 阅读 · 0 评论