初学数据结构
文章平均质量分 53
该专栏只是提供数据结构的基本语法,基本思路,后续会出数据结构中级,高级等专栏。
䔴䔴䔴
计算机底层人员
展开
-
有向图十字链表
十字链表一个存放出度,一个存放入度,更好计算结点的度转载 2021-07-31 20:32:07 · 94 阅读 · 0 评论 -
邻接表建立无向网
#include<iostream>using namespace std;#define max 20typedef int elemtype;typedef struct arcnode{ int adjvex;//弧指向结点位置 struct arcnode* nextarc;//指向下一个; elemtype m;//边信息域(权值等)}arcnode,*arcnodes;typedef struct vnode{ int x;//数...原创 2021-07-31 19:31:15 · 1484 阅读 · 0 评论 -
无向网的邻接矩阵
无向网掌握了,无向图,有向网,有向图的邻接矩阵则都可以掌握#include<iostream>using namespace std;#define maxint 32767#define mvnum 100typedef char elemtype;typedef int arch;typedef int status;typedef struct{ elemtype aex[mvnum];//存放数据 arch arcs[mvnum][mvnum]...原创 2021-07-31 12:31:13 · 1194 阅读 · 0 评论 -
哈夫曼树的建立和哈夫曼编码
#include<iostream>using namespace std;//思路哈夫曼树2n-1的parent lchild rchild 先为0//n个的weight 先输入,在依次比较大小储存typedef char** huffmancode;//类型为指向char *的指针(指针的指针)typedef struct htnode{ int weight; int parent, lchild, rchild;}*huffmantree;void...原创 2021-07-06 18:26:16 · 330 阅读 · 0 评论 -
树和森林的遍历
树只有先序后序层次遍历三种遍历方法问题:为什么没有中序遍历?答案:因为树不是二叉树根结点不知道是第几个位置遍历森林的遍历(先序,中序)1森林中第一棵树的根结点2先序遍历森林中第一棵树的子树森林3先序遍历森林中第一棵树外的森林(实际上对森林每个树进行先序遍历)(步骤1,2调换位置则为中序遍历)(实际上等于森林对每个树进行后根遍历例题例子...原创 2021-07-04 22:17:47 · 236 阅读 · 0 评论 -
森林与二叉树的转换
将森林中每棵树转化为二叉树森林中树第一棵树的二叉树的根结点为变化后二叉树的根节点(树变二叉根相连)森林变成二叉树的图示二叉树的根节点右孩子的连线全部断开成为单独的二叉树;每个二叉树变成树,树构成森林二叉树变成森林的图示...原创 2021-07-04 21:57:05 · 508 阅读 · 0 评论 -
树和二叉树的转换
树变二叉树如下图所示(兄弟相连留长子)二叉树变成树的图示原创 2021-07-04 21:47:20 · 50 阅读 · 0 评论 -
树的三种储存结构
#include<iostream>using namespace std;//树非二叉树的储存结构//1双亲表示法;//包含数据域,双亲域(数组的下标);#define maxsize 10typedef struct ptnode{ int data; int parent;}ptnode;typedef struct ptree{ ptnode nodes[maxsize]; int r, n;//r根的位置,n结点数};/...原创 2021-07-04 21:26:39 · 98 阅读 · 0 评论 -
线索二叉树的定义
#include<iostream>using namespace std;//线索二叉树的存在是为了方便找到一节点直接前驱和后继(这个取决于遍历方法,有的节点可以直接通过前驱后继找到// 提供线索二叉树后为遍历减少时间复杂度,空着浪费//不用线索二叉树的话,则每找一个前驱就要遍历一次,时间复杂度太高;typedef struct bithnode{ int ltag; int rtag; char data; bithnode* lchild; ...原创 2021-07-04 20:57:11 · 118 阅读 · 0 评论 -
二叉树遍历进行二叉树复制,求二叉树深度,求二叉树结点数叶子结点数
#include<iostream>using namespace std;运用递归思想求解二叉树遍历问题(单独思考写出难度中上)//大家可多了解递归思想typedef struct xx{ int age; xx* lchild; xx* rchild;}tree, * bitree;void copy (bitree t, bitree &newt){ if (t ==NULL) { return;...原创 2021-07-04 12:22:52 · 328 阅读 · 0 评论 -
二叉树先序递归的方法建立
#include<iostream>using namespace std;typedef struct xx{ char data; xx* lchild; xx* rchild;}tree, * bitree;void createbitree(bitree& t){ char ch; cin >> ch; if (ch == '#') { t = NULL; } ...原创 2021-06-20 12:11:10 · 271 阅读 · 0 评论 -
中序遍历非递归算法
#include<iostream>using namespace std;//非递归则可以运用栈的先进后出的特性依次进入栈,然后出栈typedef struct stack1{ bitree t; stack1* next;}stack, * linkstack;void initstack(linkstack& s){ s = new stack; s->next = NULL;}//栈的初始化int stackempt...原创 2021-06-20 10:36:24 · 1630 阅读 · 0 评论 -
二叉树的前序,中序,后序递归方法
#include<iostream>using namespace std;typedef struct xx{ int age; xx*lchild; xx* rchild;}tree,*bitree;void visit(bitree& t){ cout << t->age << endl;//输出内容;}//先序遍历法,先根节点,后左孩子,后右孩子,根节点存运算符其他存数据(和中缀表达类似)...原创 2021-06-19 17:45:06 · 440 阅读 · 0 评论 -
二叉树用顺序储存方式
#include<iostream>using namespace std;#define N 20//二叉树有个根节点typedef struct xx{ int age[N+1];//储存20个数据;下标从age[1]开始;}sqbitree;//存储密度为1(因为没有指针指向下一个节点)//如果为满二叉树和完全二叉树用顺序二叉树更好int main(){ sqbitree t; //顺序二叉树的的节点下标按从左到右进行标号如根节点...原创 2021-06-19 15:20:03 · 188 阅读 · 0 评论 -
链串的定义
串多用顺序结构,链式结构少用,这里提供链串的基本格式#include<iostream>using namespace std;#define max 100typedef struct chunk{ char c[max + 1]; linkchunk next;}chunk,* linkchunk;typedef struct{ linkchunk front;//头指针 linkchunk rear;//尾指针}chunk;...原创 2021-06-12 01:13:31 · 146 阅读 · 0 评论 -
顺序串的BF算法KMP(找next数组的值)算法
bf算法难度一般,kmp算法难度一般但是其中的找next[j]的算法比较难,很多小伙伴不好听明白,在这我推荐你们看这个链接的视频(https://www.bilibili.com/video/av714697013/)讲解的很明白通过动画理解代码的意义,这个不好理解多看多思考#include<iostream>using namespace std;#define max 100int next[max];typedef struct{ char ...原创 2021-06-12 01:08:45 · 219 阅读 · 0 评论 -
链队列的基本实现
链队列的基本实现操作,多思考用手画图思考辅助,思考多种情况#include<iostream>//队列的链式表达,队列多用链式表达.using namespace std;typedef struct quee{ int age; linkquee next; linkquee front;//头指针 linkquee rear;//尾指针}quee,*linkquee;void innitialquee(linkquee &...原创 2021-06-04 11:48:10 · 100 阅读 · 0 评论 -
顺序队列的基本操作
顺序队列的实现基本操作,思考画图辅助代码实现#include<iostream>using namespace std;#define maxsize 4//顺序实现队列//循环储存空间避免溢出错误//队列多用链表表示typedef struct quee{ int* base;//指向int形数据指针 int front;//对头元素位置 int rear;//对尾元素位置}quee;void initialquee(quee&a...原创 2021-06-04 11:46:41 · 100 阅读 · 0 评论 -
嵌套递归和栈的关系
递归嵌套和栈类似,先调用后计算,和先进后出类似#include<iostream>using namespace std;//递归是什么意思(套娃)//long fact(int n)//{// if (n == 0) return 1;// else return n * fact(n - 1);//和栈先进后出类似//}//求阶乘的递归。//递归作用://1 特定递归函数//2 递归数据结构//3 递归解决问题//函数递归和栈类似int...原创 2021-06-02 19:07:43 · 141 阅读 · 0 评论 -
链栈的基本操作
基本操作难度不大,可以画图来辅助实现代码,也可脑袋思考敲代码。#include<iostream>using namespace std;typedef struct stacknode{ int age; linkstack next;}stacknode ,*linkstack;//链栈只能在表头进行插入和删除。void initialstack(linkstack& s){ s = NULL; cout << "初始...原创 2021-06-01 21:52:18 · 100 阅读 · 0 评论 -
顺序栈的基本操作实现
多思考可以通过画图来辅助思考再用代码实现#include<iostream>using namespace std;//栈的实现//两个指针top base#define N 20//栈的总长度typedef struct stack{ int* top;//top指向栈顶上一个 int* base; int stactsize;}stack;//用指针指向int类型的数据构成void initialstack(stack &s)...原创 2021-06-01 17:42:11 · 126 阅读 · 0 评论 -
两个链表合并的算法
//两个链表合并的算法;//有错请指出谢谢大家//1 单链表的合并typedef struct list{int age;Linklist next;}sqlist ,*Linklist1:首先来讲单链表是什么,单链表的节点只含有指向下一个节点的指针,尾节点的指针为NULLLinklist connect(Linklist L1,Linklist L2){p3=L2;p->next=L1;//p为L2的尾部节点return p3; /...原创 2021-05-30 21:59:05 · 210 阅读 · 0 评论 -
单链表基本操作的实现
编程过程:1:动笔加思考(最重要的是思考,别直接去看别人的代码实现)2:上机敲代码3:查看运行结果4:操作有问题则针对每个操作仔细分析5:百思不得其解则百度或者查阅资料#include<iostream>using namespace std;//单链表基本操作的实现//头结点存放表长等数据;//头指针可指向首元节点,头结点typedef struct list{ int age; struct list* next;}lnode, *...原创 2021-05-24 18:13:56 · 123 阅读 · 0 评论 -
顺序表功能的基本实现
顺序表功能的基本实现声明:本人刚接触数据结构,现在在自学中,写博客是一种总结,也给大家参考一下,代码有错,大家可以指出批评。注意事项:该实现顺序表运用的是c++,其中包含c++的&应用符号 c语言运用...原创 2021-05-22 08:42:29 · 253 阅读 · 0 评论