
数据结构
傻小菜
这个作者很懒,什么都没留下…
展开
-
C++哈夫曼算法的实现
算法思想:(1) 以权值分别为W1,W2...Wn的n各结点,构成n棵二叉树T1,T2,...Tn并组成森林F={T1,T2,...Tn},其中每棵二叉树 Ti仅有一个权值为 Wi的根结点;(2) 在F中选取两棵根结点权值最小的树作为左右子树构造一棵新二叉树,并且置新二叉树根结点权值为左右子树上根结点的权值之和(根结点的权值=左右孩子权值之和,叶结点的权值= Wi)(3) 从F中删除这...原创 2019-04-30 09:16:26 · 934 阅读 · 0 评论 -
循环队列的C++代码实现
#include<iostream>using namespace std;const int QueueSize=100;template<class DataType>class CirQueue{private: DataType data[QueueSize];//存放队列的数组 int front,rear;//队头和队尾指针,,相当...原创 2019-04-23 09:30:44 · 801 阅读 · 0 评论 -
二叉链表实现二叉树
二叉树的遍历:前序遍历,中序遍历,后序遍历,层序遍历二叉链表的存储实现:1、定义结构体,存储二叉树的结点数据,该结点的左儿子,右儿子。2、每一个函数都要有一个对应的私有成员#include<bits/stdc++.h>using namespace std;template<class DataType>struct BiNode...原创 2019-04-23 09:29:32 · 514 阅读 · 0 评论 -
链队列的基本实现
链队列的基本实现:1,定义结点2,初始化队列时,需要头结点,使操作统一;有两个指针,一个头指针,一个尾指针,两个指针都指向头结点。3,入队操作,需要在队 尾进行元素的入队,若一次多个元素入队,需要循环入队,最后一个元素的指针域为空4,出队操作,队头元素出队,需要注意队头元素并不是头结点。多个元素出队时,要循环调用出队函数。5,判空操作。#include<iostre...原创 2019-04-16 08:45:38 · 317 阅读 · 0 评论 -
循环队列的基本实现
队列:只允许在一端进行插入操作(队尾),在另一端进行删除操作的线性表(队头)。先进先出。循环队列:为了解决假溢出的问题;循环队列有两个指针,rear尾指针和front头指针(相当于数组的下标) 队空:rear和front指在同一个位置,即:rear==front; 队满:(rear+1)%QueueSize==front。...原创 2019-08-08 16:06:30 · 157 阅读 · 0 评论 -
链栈的实现
链栈:与单链表类似。但是链栈只能在一端存取数据,所以将链的头部作为栈顶,尾部作为栈底方便存取数据。链栈只有一个top指针,而且不需要定义头结点。入栈操作,不需要判断是否栈满,因为链式存储是动态存储,可以动态的分配内存空间。出栈操作,需要判断是否栈空。#include<iostream>using namespace std;template<class Da...原创 2019-03-30 16:12:49 · 431 阅读 · 0 评论 -
两栈共享空间的基本实现
是两个顺序栈,采用想向存储的方式在入栈,出栈,取栈顶元素,判空时要明确是对哪一个栈进行的操作栈满的条件:top2=top1+1两个栈空的条件:top=-1;top2=stacksize;#include<iostream>using namespace std;const int StackSize=100;template<class DataType&...原创 2019-03-29 22:54:57 · 965 阅读 · 0 评论 -
顺序栈的基本实现
顺序栈采用的是用数组存储的方式顺序栈的特点:只允许在栈顶插入和删除元素,且 先入后出#include<iostream>using namespace std;const int StackSize=10;template<class DataType>class SeqStack{private: DataType data[StackSiz...原创 2019-03-29 21:49:27 · 152 阅读 · 0 评论 -
线性表的实现
线性表是采用数组保存元素,因为数组是先定义后声明,所以数组的大小是确定的,即,线性表的大小是一定的,所以在插入删除元素时,会出现位置异常的现象。#include<iostream>using namespace std;const int MaxSize=100;template<class DataType>class SeqList{private :...原创 2019-03-16 10:00:47 · 110 阅读 · 0 评论 -
单链表的实现
生成过程:全部采用C++模板机制1,先定义一个表示节点的结构体,里面有两个元素,一个是数据域,一个是结点域。2,链表类中只有一个成员:头指针3,构造函数中要先初始化一个头结点4,想要新生成一个结点时,首先要先生成这个结点的指针 Node<DataType> *s; s=new Node<DataType>;#in...原创 2019-03-16 09:58:13 · 612 阅读 · 0 评论 -
循环链表
循环链表的实现的关键:1,在写构造函数时,初始化一个空的循环链表 空的循环链表:first->next=first; 尾指针指向头结点。2,采用头插法插入元素时,插入的第一个元素是最末尾的那个元素,所以他的指针应该指向头结点。 此后,每插入一个节点,就像是单链表的插入过程一样。#include<iostream>using namespac...原创 2019-03-16 09:52:15 · 313 阅读 · 0 评论 -
图的邻接矩阵实现与深度优先遍历、广度优先
重点:1、深度优先遍历——递归2、广度优先遍历——队列#include<bits/stdc++.h>using namespace std;const int MaxSize=10;//图中最多顶点的个数int visited[MaxSize];template<class DataType>class Queue{public: D...原创 2019-05-14 17:39:17 · 8608 阅读 · 0 评论