合集-数据结构与算法
算法3:质数的个数
摘要:一、质数的定义 质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。 二、判断质数的方法 1 for(int j = 2; j < i; j ++) { 2 if(i % j == 0) 3 break; 4 if(i == j) 5 cout << i << " "; 6 } 三
算法2:Hanoi塔
摘要:汉诺(Hanoi)塔 一、背景介绍 在印度,有这么一个古老的传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片,一
算法1:Fibonacci数列
摘要:斐波那契数列(Fibonacci) 一、背景介绍 斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”。 【兔子繁殖问题】 一般而言,兔子在出生两个月后,就有繁殖能力,一
[数据结构]排序算法的性能比较
摘要:写在前面 菜鸡博主最近放寒假了,打算接下来的一段时间内回顾一下以前学过的一些知识,也是为考研做一些准备吧。很菜,勿喷,希望能和大家一起学习,共同进步! 主要目标和具体要求 目标 排序对于数据处理是一项十分重要和基础的工作。采用如下算法实现排序功能:插入排序、交换排序、选择排序、归并排序、基数排序等。
[数据结构] 链表
摘要:写在前面 菜鸡博主开始复习了,先从数据结构开始吧(其实是每天复习高数太累了) 1. 单链表 单链表是线性表的链式存储,是指通过一组任意的存储单元来存储线性表中的数据元素。对每个链表节点,除了存放元素自身的信息之外,还需要存放一个指向其后继的指针(如下图所示) 单链表的节点可以用如下代码描述: typ
[数据结构] 栈
摘要:栈的定义及特点 栈(Stack)是只允许在一端进行插入或删除操作的线性表,如图所示: 栈顶(top):线性表允许进行插入、删除的一端; 栈底(bottom):不允许进行插入和删除的一端; 空栈:不含任何元素的空表。 如上图所示,设某个栈 ,
[数据结构] 数组与特殊矩阵
摘要:写在前面 偷懒,先写了数组,队列要画图,所以今天就先不写了 数组的定义 数组是由n个相同类型的数据元素构成的有限序列。每个数据元素被称为一个数组元素,每个元素在n个线性关系中的序号称为该元素的下标,下标的取值范围称为数组的维界。 数组与线性表的关系:数组是线性表的推广。一维数组可视为一个线性表,二维
[数据结构] 队列
摘要:队列的基本概念 队列(Queue),是一种操作受限的线性表,只允许在表的一端进行插入,而在表的另一端进行删除。向队列中插入元素称为入队,删除元素称为出队。其操作特性是先进先出 队列的常见操作: 函数名 功能 InitQueue(*Q) 初始化队列,构造一个空队列Q QueueEmpty(Q) 判断队
[数据结构] 串与KMP算法详解
摘要:写在前面 今天是农历大年初三,祝大家新年快乐! 尽管新旧交替只是一个瞬间,在大家互祝新年快乐的瞬间,在时钟倒计时数到零的瞬间,在烟花在黑色幕布绽放的瞬间,在心底默默许下愿望的瞬间……跨入新的一年,并不意味了一切都会朝着更美好,也没有什么会从天而降,我们赋予了它这份意义,让它自然裹挟着新的爱与希望而来
[数据结构] 树与二叉树
摘要:树的基本概念 树的定义 树是由 个节点组成的有限集。当 时,称为空树。 任意一棵非空树应满足以下两点: (1)有且仅有一个特定的称为根的节点; (2)当 时,其余节点可分为 个互不相交的有限集\(T_1, T_2, \do
[数据结构] 树、森林及二叉树的应用
摘要:树、森林 树的存储结构 双亲表示法 双亲表示法的存储结构 #define MAX_TREE_SIZE 100 typedef struct { int data; int parent; }PTNode; typedef struct { PTNode nodes[MAX_TREE_SIZE]; i