随笔分类 - 数据结构
摘要:搜索二叉树是一种具有良好排序和查找性能的二叉树数据结构,包括多种操作,本篇只介绍插入,排序(遍历),和删除操作,重点是删除操作比较复杂,用到的例子也是本人亲自画的 用到的测试图数据例子 第一、构建节点 1 template <typename T> class BST; 2 template <ty
阅读全文
摘要:二叉树首先要解决构建问题,才能考虑后续的遍历,这里贴出通过先序构建二叉树,同时包含四种二叉树的遍历方法(先序,中序,后序,逐层) 第一、定义BinaryTreeNode 类 1 #include <iostream> 2 #include <string> 3 #include <queue> 4
阅读全文
摘要:上一篇用链表实现了stack,这篇我们采用数组来存储数据,数组更容易理解,直接贴代码 第一、代码实现 1 #pragma once 2 #include <iostream> 3 using namespace std; 4 template <typename T> class StackArra
阅读全文
摘要:第一、基本概念 栈中的元素遵守“先进后出”的原则(LIFO,Last In First Out) 只能在栈顶进行插入和删除操作 压栈(或推入、进栈)即push,将数据放入栈顶并将栈顶指针加一 出栈(或弹出)即pop,将数据从栈顶删除并将栈顶指针减一 栈的基本操作有:pop,push,判断空,获取栈顶
阅读全文
摘要:第一、包含DoubleLinkNode 模板类和DoubleLinkList 模板类
阅读全文
摘要:排列:从n个元素中任取m个元素,并按照一定的顺序进行排列,称为排列; 全排列:当n==m时,称为全排列; 比如:集合{ 1,2,3}的全排列为: { 1 2 3} { 1 3 2 } { 2 1 3 } { 2 3 1 } { 3 2 1 } { 3 1 2 } 我们可以将这个排列问题画成图形表示,
阅读全文
摘要:第一、算法描述 快速排序由C. A. R. Hoare在1962年提出,该算法是目前实践中使用最频繁,实用高效的最好排序算法, 快速排序算法是采用分治思想的算法,算法分三个步骤 第二、算法实现 两个辅助函数: 测试输出: 第三、算法图解分析 下面我们来具体分析下程序怎么运行的, quickSort(
阅读全文
摘要:第一、算法描述 直插排序很容易理解,在我们打扑克牌的时候,每一次摸完牌,都会按数字大小或者花色,插入到合适的位置,直到摸完最后一张牌,我们手中的牌已经按大小顺序排列好了。这整个过程就是一个插入排序 下面举个例子,初始数组 {12, 15, 9, 20, 6, 31, 24} 我们把第一个元素12作为
阅读全文
摘要:第一、树的构建 定义树结构 静态方式创建一个简单的二叉树 第二、树的三种遍历 1. 先序遍历 2. 中序遍历 3.后续遍历 第三、最终运行测试
阅读全文
摘要:第一、树的定义: 1.有且只有一个称为根的节点 2.有若干个互不相交的子树,这些子树本身也是一颗树 第二、专业术语: 树的深度:从根节点到最低层,节点的层数 ,称之为树的深度。 根节点是第一层 结点的层次:根节点为第一层,根节点的子节点为第2层,以此类推 叶子节点:没有子节点的节点 非终端节点:实际
阅读全文
摘要:继续复习链表知识点,本章包含单链表的增加,删除,判断是否为空,和链表长度,以及链表的排序 几个知识点 1.链表的判断是否为空 2. 计算链表的长度 3. 在制定位置增加节点 4. 在指定位置删除节点 5.节点的排序 6. 测试代码
阅读全文
摘要:定义节点: 细节说明,PNode 就代表struct Node* ,上面的表单是也可以写成如下形式,含义是一样的 算法操作 1. 创建链表 2. 显示链表数据 3. 运行测试
阅读全文
摘要:今天在写一个算法的时候用到了排列组合,突然感觉不熟悉了,于是自己搜索了下, 重新复习下,把笔记记下来,便于以后复习。 第一,排列 1)排列的定义,就是指从给定n个数的元素中取出指定r个数的元素,进行排序 2)排列公式 3 公式解读, 总长度为r,第一个人有n-0种选,第二个有n-1种,,,,最后一个
阅读全文
摘要:在数据结构中包含两种,一种线性结构(包括顺序表,链表,栈,队列),一种非线性结构(树,图), 顺序表,其实就是在内存动态数组,Java中的ArrayList就是一个典型的顺序表,它在顺序表的基础上增加了扩容机制,单实质还是一个顺序表 下面分三步, 1创建一个顺序表结构, 2.贴出所有操作的代码 3.
阅读全文
浙公网安备 33010602011771号