![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构实验
闲鱼翻不了身
这个作者很懒,什么都没留下…
展开
-
UnionFind(并查集)
基于C++的并查集数据结构的实现,一步步优化。可阅读性应该还可以。原创 2022-08-16 20:17:53 · 416 阅读 · 0 评论 -
图实验(邻接表)
图实验(邻接表)用邻接表实现图的存储,并完成深度优先遍历和广度优先遍历头文件#pragma onceconst int MaxSize = 10;struct EdgeNode {//边结点 int adjvex;//邻接点域 EdgeNode* next;};struct VertexNode {//顶点 char vertex; EdgeNode* firstEdge;};class ALGraph{public: ALGraph(char a[], int n, int原创 2021-07-31 18:04:08 · 354 阅读 · 0 评论 -
图实验(邻接矩阵)
图实验(邻接矩阵)用邻接矩阵实现图的存储,并完成图的深度优先遍历和广度优先遍历头文件#pragma onceconst int MS = 10;//图中最多顶点数class MGraph{public: MGraph(char a[], int n, int e); ~MGraph() {}; void DFT(int v);//深度优先遍历 void BFT(int v);//广度优先遍历 int visited[MS];//判断顶点是否被访问过private: char ve原创 2021-07-31 14:57:46 · 293 阅读 · 0 评论 -
数据结构课设(各大排序方法比较)
数据结构课设(各大排序方法比较)实现了数据结构(清华大学王红梅)书上介绍的所有排序方法的比较。以下是源代码,课设报告和PPT已上传至本人CSDN博客空间。源代码#include <iostream>#include<ctime>;#include<cstdlib>;using namespace std;const int N = 10000;const int M = 10;const int m = 100;struct Node{ int k原创 2021-07-30 20:52:55 · 250 阅读 · 0 评论 -
并查集实验
并查集实验用双亲表示法实现并查集的并和查的功能头文件#pragma oncestruct Elem { char data; int parent;//结点用双亲表示法};class UnionFind{public: UnionFind(char ch[], int n);//每个元素构成一个子集 ~UnionFind() {};//析构函数 int ufind(char x);//查找元素x所在子树的根结点 void Union(char x, char y);//合并元素x原创 2021-07-30 20:20:43 · 188 阅读 · 0 评论 -
优先队列实验(堆实现)
优先队列实验(堆实现)用堆的思想实现极大队列(极小队列也是一个道理,代码中判断条件改一下即可)头文件#pragma onceconst int QueueSize = 100;class PriQueue{public: PriQueue() { rear = 0; };//构造函数,初始化空的极大对列表 ~PriQueue() {};//析构函数 void enQueue(int x);//入队 void deQueue();//出队 int getHead();//取队头元素原创 2021-07-29 21:10:52 · 134 阅读 · 0 评论 -
二叉树实验(2)
DFS和BFS1.树结点结构体:struct TreeNode{ int val; TreeNode *left; TreeNode *right; //TreeNode(int x):val(x),left(nullptr),right(nullptr){} TreeNode(int x,TreeNode*l=nullptr,TreeNode*r=nullptr):val(x),left(l),right(r){}};2.BFS(队列)void BFS原创 2021-05-09 20:51:29 · 130 阅读 · 0 评论 -
二叉树实验
二叉树实验实现二叉树的构造,析构。以及3种深度优先遍历和它的广度优先遍历。缺点是利用递归构造的二叉树是扩展二叉树,构造的二叉树的扩展字符的位置要确保合理,构造函数有待改进。头文件#pragma oncestruct BiNode { char data;//数据域 BiNode* lchild, * rchild;//指向左节点右节点的指针};class BiTree{public: BiTree() { root = creat(); }//构造函数,构造一棵二叉树 ~BiTree原创 2021-07-28 14:11:51 · 204 阅读 · 0 评论 -
字符串实验
字符串实验实现求串的长度,拼接,比较大小的基本操作头文件#pragma onceint strlen(char* s);//求长度char* strcat(char* s1, char* s2);//字符串拼接int strcmp(char* s1, char* s2);//字符串比较源文件#include "String.h"int strlen(char* s) { char* p = s;//p指向字符串起始位置 int len = 0; while (*p != '\0')原创 2021-07-27 20:05:28 · 189 阅读 · 0 评论 -
栈实验(两栈共享空间)
栈实验(两栈共享空间)两个栈共享一个存储空间,该方法对于两个栈对空间需求刚好相反时很有用,即一个栈增大,另一个栈必然减小的情况头文件#pragma onceconst int STACKSIZE = 100;class BothStack{public: BothStack() { //初始化两个空栈 top1 = -1; //栈1的栈顶游标 top2 = STACKSIZE; };//栈2的栈顶游标 ~BothStack() {}; void push(int i, int x原创 2021-07-26 20:18:11 · 831 阅读 · 0 评论 -
双端队列实验
双端队列实验用顺序存储结构实现双端队列头文件#pragma onceconst int QUEUESIZE = 20;class DoubleQueue{public: DoubleQueue() { front = QUEUESIZE - 1; rear = QUEUESIZE - 1; }; ~DoubleQueue() {}; void enQueueHead(int x);//从队首入队 void enQueueTail(int x);//从队尾入队 void de原创 2021-07-26 18:54:26 · 123 阅读 · 0 评论 -
队列实验(链式结构)
队列实验(链式结构)用链式存储结构实现队列头文件#pragma oncestruct Node { int data; Node* next;};class LinkQueue{public: LinkQueue(); ~LinkQueue(); void enQueue(int x);//入队 void deQueue();//出队 int getHead();//获取队头元素 bool empty();//判空private: Node* front, *rear;/原创 2021-07-26 15:00:28 · 110 阅读 · 0 评论 -
队列实验(顺序结构)
队列实验(顺序结构)用顺序结构实现队列,要求生成的是循环队列,没有假溢出头文件#pragma onceconst int QUEUESIZE = 10;class Queue{public: Queue() { front = QUEUESIZE - 1; rear = QUEUESIZE - 1; }; ~Queue() {}; void enQueue(int x);//入队 void deQueue();//出队 int getHead();//获取队头元素 boo原创 2021-07-26 14:32:10 · 168 阅读 · 0 评论 -
栈实验(链式结构)
链栈实验(链表实现)用链式存储实现栈头文件#pragma oncestruct Node { Node* next; int data;};class LinkStack{ public: LinkStack() { top = nullptr; };//构造函数,初始化一个空栈 ~LinkStack();//析构函数 void push(int x);//压栈 void pop();//弹栈 int getTop();//取栈顶元素,不弹栈 bool empty原创 2021-07-25 23:42:58 · 215 阅读 · 1 评论 -
栈实验(顺序结构)
顺序栈实验用顺序存储方式实现栈头文件#pragma onceconst int STACKSIZE = 10;class Stack{public: Stack() { top = -1; };//构造函数,初始化一个空栈 ~Stack() {};//析构函数 void push(int x);//压栈 void pop();//弹栈 int getTop();//取栈顶元素,不弹栈 bool empty();//判断栈是否为空private: int data[STACKSI原创 2021-07-25 23:18:14 · 139 阅读 · 0 评论 -
双链表实验
双链表实验题目建立数据结构,实现双链表,实现双链表的插入和删除操作。头文件#pragma oncestruct Node { Node* prior, * next; int data; Node() { data = 0; prior = nullptr; next = nullptr; } Node(int x) { data = x; prior = nullptr; next = nullptr; }};class DLinkList{publi原创 2021-07-22 21:36:05 · 165 阅读 · 0 评论 -
单链表实验
单链表头文件#pragma oncetemplate<typename T>struct Node {//链表结点 T data;//数据域 Node<T>* next;//指针域};template<typename T>class LinkList{public: LinkList();//建立只有头结点的空链表 LinkList(T a[], int n);//建立有n个元素的单链表,头插法 LinkList(int n, T a[]);原创 2021-07-20 15:33:02 · 166 阅读 · 0 评论 -
顺序表实验
顺序表实验题目完成子集的顺序表类,提供增删查等功能。头文件#pragma onceconst int MaxSize = 100;class SeqList {private: int data[MaxSize]; int length;//表长public: SeqList() { length = 0; }//无参构造函数,构造一个空表 SeqList(int a[], int n);//有参构造函数 ~SeqList() {};//析构函数原创 2021-07-19 19:13:27 · 200 阅读 · 2 评论