大话数据结构学习笔记
记录下《大话数据结构》学习心得和代码
磨叽墨迹墨迹
这个作者很懒,什么都没留下…
展开
-
大话数据结构学习笔记(13)C++实现各种排序算法
#include<iostream>#include<vector>using namespace std;//打印void foreach(vector<int> v){ for (vector<int>::iterator it = v.begin(); it!=v.end(); it++) { cout << *it << " "; } cout << endl;}//交换函数void.原创 2020-10-21 17:07:40 · 153 阅读 · 0 评论 -
大话数据结构学习笔记(12)C++实现哈希表(分离链接法,插入,删除,遍历)
#include<iostream>#include<vector>#include<deque>using namespace std;class HashTable{public: HashTable(int n); ~HashTable() = default; bool insertRecord(const int m); //插入一个值 void removeRecord(const int m);//删除一个值 void print.原创 2020-10-19 21:37:27 · 403 阅读 · 0 评论 -
大话数据结构学习笔记(11)C++实现二叉平衡树
#include<iostream>using namespace std;#define LH +1 //左高#define EH 0 //等高#define RH -1 //右高class BiTNode{public: int data=0; int bf=0; //结点的平衡因子 BiTNode *lchild = NULL, *rchild=NULL;};class Bitree{private: bool taller; //t.原创 2020-10-19 15:39:36 · 112 阅读 · 0 评论 -
大话数据结构学习笔记(10)C++实现二叉排序树(创建、插入、遍历、删除)
#include<iostream>#include<vector>using namespace std;class BiTNode{public: int data; BiTNode *lchild = NULL, *rchild = NULL;};class Bitree{public: BiTNode *root; void in_order(BiTNode *t); BiTNode *search(BiTNode *cur, int var.原创 2020-10-19 13:52:46 · 121 阅读 · 0 评论 -
大话数据结构学习笔记(9) C++实现邻接矩阵、邻接表、深度遍历、广度遍历、Prim算法、Kruskal算法、Dijkstra算法、Floyd算法
#include<iostream>#include<vector>using namespace std;typedef int T; //顶点的值的类型int,char,double and so onclass Node //顶点类{public: T value; //顶点值 int numbers; //顶点编号};class Edge //边类{public: int num.原创 2020-10-12 22:29:42 · 372 阅读 · 0 评论 -
大话数据结构学习笔记(8)二叉树
声明:本篇博客的图来源于:https://blog.csdn.net/qq_35433716/article/details/89710720一、相关名词说明度:结点拥有的子树数;(树的度是树内各节点的度的最大值)叶节点或终端结点:度为0的结点非终端结点或分支节点:度不为0的结点;二、二叉树的定义二叉树是n个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根节点的左子树和右子树组成。三、二叉树的特点1、每个结点最多由两颗子树;..原创 2020-09-29 22:05:51 · 149 阅读 · 0 评论 -
大话数据结构学习笔记(7)队列的链式存储结构及实现
front指向链队列的头结点rear指向终端结点rear->next=NULL;#include <iostream>using namespace std;class Node//结点类{public: Node(); ~Node(); int DATA; Node *next;};Node::Node(){}Node::~Node(){}class queue{public: queue(); ~queue(); bool原创 2020-09-27 16:16:41 · 96 阅读 · 0 评论 -
大话数据结构学习笔记(6)队列的顺序存储结构及实现
队列的定义:只允许在一端进行插入操作,另一端进行删除操作的线性表。(先进先出)循环队列:首尾相接的队列。循环队列的顺序存储结构使用数组实现。引入两个指针:front指针指向对头元素,rear指针指向队尾元素的下一个位置。在循环队列里,rear指针是可以在front指针前面的。循环队列满的条件:(rear+1)%MAXSIZE==front;//MAXSIZE为数组的最大长度循环队列空的条件:rear==front;计算循环队列长度:L=(rear-front+MAXSIZE)%MAXSI原创 2020-09-27 15:18:05 · 127 阅读 · 0 评论 -
大话数据结构学习笔记(5)栈的链式存储结构及实现
C++实现如下:#include <iostream>using namespace std;template<typename T>struct Node{ T data;//数据域 Node *next;//指针域};//链表类template<typename T>class stack{public: stack(); ~stack(); bool push(const T &e);//压栈 bool pop(co.原创 2020-09-27 13:42:57 · 122 阅读 · 0 评论 -
大话数据结构学习笔记(4)栈的顺序存储结构及实现
栈:限定仅在表尾进行插入和删除操作的线性表。线性表打好基础的话,栈很容易理解。直接贴C++代码。#include <iostream>using namespace std;#define MAXSIZE 20template<typename T>class Sqstack{public: Sqstack(); ~Sqstack(); bool emptystack();//置为空栈 bool IsNuLL();//判断是否为空栈 bool Pu原创 2020-09-26 15:06:41 · 90 阅读 · 0 评论 -
大话数据结构学习笔记(3)静态链表、循环链表、双向链表
一、静态链表静态链表:用数组描述的链表静态链表需要预先定义一个指定长度的数组,这个数组里的元素就对应的是静态链表的结点。这个结点包含两个变量一个是data用来存数据,一个是cur,用来存地址,不过这个地址就不一定像普通链表那样存的是下一个结点的地址了。下面 是我对静态链表的理解,有什么不对的地方希望各位指正。 我觉得静态链表里的结点的属性可以分为四类:(1)数组第一个元素:这个结点data为空,cur存的是备用成员(备用链表)的首地址。ps:这个结点就像是一扇门,备用成员只能通过这个结点一个原创 2020-09-25 15:24:40 · 160 阅读 · 0 评论 -
大话数据结构学习笔记 (2) 线性表的顺序存储结构
一、相关知识点1、线性表的定义:线性表的数据对象集合为{a1,a2,a3,....,an},每个元素的类型相同。其中,除了第一个元素a1外,每一个元素有且只有一个直接前驱元素。除了最后一个元素an外,每一个元素有且只有一个直接后继元素。数据元素之间的关系是一对一的关系。2、线性表的顺序存储结构:用一段地址连续的存储单元依次存储线性表的数据元素。在C++里可以通过一维数组来实现。比如定义数组:int *list=new int[n];注意线性表的下标是从1开始的,而数组的下标的是从0开始的.原创 2020-09-25 10:48:03 · 285 阅读 · 0 评论 -
大话数据结构学习笔记(1)C++链表操作(创建、遍历、插值、删除)
本人C++和数据结构初学者,在这里记录下自己的一些学习心得,有不对之处希望各位指正。最近一直在看程杰所著的《大话数据结构》,书中跑的代码是基于C,自己试着用C++练习一遍。借鉴了这位博客https://blog.csdn.net/chixujohnny/article/details/50900504的思路。整个代码如下。#include <iostream>using namespace std;struct ListNode{ int data; ListNode *n原创 2020-09-24 17:01:58 · 728 阅读 · 0 评论