C++数据结构与算法
Lifelrving
脆弱的人才会四处游说自己的不幸,坚强的人只会不动声色地愈渐坚强
展开
-
数据结构与算法——二叉树
一、二叉树及其存储定义:一个有穷的结点集合这个集合可以为空若不为空,则它是有根结点和称其为左子树和右子树的两个不相交的二叉树组成。ADT:类型名称:二叉树数据对象集:一个有穷的节点集合操作集:判断是否为空,遍历访问,初始化一棵二叉树二叉树的顺序存储结构:对于完全二叉树:按从上至下,从左到右顺序存储n个结点的完全二叉树的结点父子关系但是对于一般的二叉树,需要对其进行补齐才能顺序...原创 2020-02-24 00:24:10 · 179 阅读 · 0 评论 -
数据结构与算法——线性结构的应用之多项式运算
其中输入数据里第一行代表第一个多项式:4表示共有4项第一行代表多项式:3x^4 – 5x^2 + 6x - 2输出项分别是求和和两个多项式的乘积。代码实现:#include<iostream>using namespace std;typedef struct PolyNode* Polynomial;struct PolyNode{ int coef; ...原创 2020-02-24 00:04:22 · 378 阅读 · 0 评论 -
数据结构及算法——队列
一、队列及其顺序存储也是一种受约束的线性表,与堆栈不同的是,队列允许从一端插入元素,从另一端删除元素。ADT:类型名称:队列(队列)数据对象集:一个有0个或多个元素的有穷线性表操作集:长度为Maxsize的队列,初始化,判断是否已满及是否为空,插入和删除队列的顺序存储结构通常由一个一维数组和一个记录队列头元素位置的变量front以及一个记录队列尾元素位置的变量rear组成。#defi...原创 2020-02-23 17:38:24 · 320 阅读 · 0 评论 -
数据结构与算法——堆栈
一、堆栈及其顺序存储定义:具有一定操作约束的线性表,只在一段做插入,删除,后入先出ADT:类型名称:堆栈(Stack)数据对象集:一个有0个或多个元素的有穷链表操作集:初始化空堆栈,判断是否已满,是否为空,插入和删除堆栈的顺序存储结构通常由一个一维数组和记录栈顶元素位置的变量组成。#define struct SNode* Stack;struct SNode{ElementTy...原创 2020-02-23 17:19:17 · 190 阅读 · 0 评论 -
数据结构与算法——二叉搜索树的同构判断
一、基本概念:之前已经讨论过一般二叉树的同构判别:一般二叉树的同构判别方法一:根据两个序列分别建立两棵树,然后依据树的同构判别方法判断是否为同一棵二叉搜索树方法二:不建树,先判断根结点,若相同,再判断其左右子树是否相同;方法三:依据其中任意一条序列建一棵树,然后和其他序列进行比较法三的思路:搜索树的表示,建立搜索树,判断一个序列是否和该树一致二叉搜索树的表示:typedef struc...原创 2020-02-23 16:17:59 · 365 阅读 · 0 评论 -
数据结构与算法——线性表
一、线性表及其顺序存储ADT:类型名称:线性表(List)对象集:线性表是n个元素构成的有序序列操作集:初始化,按值寻找,按序号寻找,插入,删除,求链表长typedef struct LNode* List;struct LNode{ ElementType Data[MMAXSIZE];int Last;};List Ptrl;代表整个线性表#include<io...原创 2020-02-22 23:34:21 · 168 阅读 · 0 评论 -
数据结构与算法——寻找最大子列算法
一、介绍:二、代码实现#include<iostream>using namespace std;int MaxSequenceSum1(int N,int arr[]){ int MaxSum,ThisSum; MaxSum=0; for(int i=0;i<N;i++) { for(int j=0;j<N;j...原创 2020-02-22 22:52:22 · 133 阅读 · 1 评论 -
数据结构与算法——堆
一、堆的基本概念优先队列:特殊的“队列”,取出元素的顺序是依照元素的优先权(或关键字大小,如权重),而不是进入队列的先后顺序。堆的存储结构:是否可以采取形同二叉树的链表形式?答:是可以的,但是由于堆经常需要加入和删除元素,采取不同的链表二叉树,可能会导致二叉树退化形成单链表,从而增加了树的高度,搜索复杂度增加。堆的存取形式采取优先队列的完全二叉树堆的性质:1.结构性:堆是用数组表示的...原创 2020-02-22 21:55:35 · 111 阅读 · 0 评论 -
数据结构与算法——哈夫曼树
一、哈夫曼树的定义及构造思想哈夫曼树定义:满足WPL最小的二叉树,即最优树WPL(带权路径长度):设二叉树有n个叶结点,每个叶子结点带有权值wk,从根结点到每个叶结点长度为lk,则每个叶结点的WPL = ∑wk*lk哈夫曼树特点:1.没有度为1的结点,要么度为2要么度为0,因为每个结点都是由子结点两两合并而来。2.哈夫曼树的任意非叶结点的左右子树交换后仍是哈夫曼树3.n个叶结点的哈夫曼...原创 2020-02-22 21:23:01 · 2372 阅读 · 0 评论