![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
阿土的炼丹炉
这个作者很懒,什么都没留下…
展开
-
数据结构之二叉树相关知识汇总
中序和后序遍历,画二叉树和写出前序遍历 理解二叉树的三种遍历–前序、中序、后序 +层序(简明易懂)原创 2021-03-16 12:56:26 · 86 阅读 · 0 评论 -
最小生成树(普利姆算法实现)
算法思想: 1.首先创建一个集合U,从带权连通图中任意选一顶点A,将A放入集合U中。 2.再从与A相连的顶点中找到一个顶点B,使A到B的权值最小。再将B也加入集合U. 3.接着再 从顶点中找到顶点C,使得C到集合U的边权值最小(即到A或B的权值最小)。 4.按照这种步骤继续下去,直到所有的顶点都被访问过。 注:每加入一个顶点,就意味着找到一条MST的边。 ...原创 2019-12-02 14:03:31 · 265 阅读 · 0 评论 -
图的深度优先搜索与广度优先搜索
来源原创 2019-11-23 16:24:53 · 83 阅读 · 0 评论 -
图的储存结构之邻接表
对于图来说,邻接矩阵是不错的一种图存储结构,但是我们也发现,对于边数相对顶点较少的图,这种结构是存在对存储空间的极大浪费的。因此我们考虑另外一种存储结构方式:邻接表(Adjacency List),即数组与链表相结合的存储方法。 邻接表的处理方法是这样的。 1、图中顶点用一个一维数组存储,另外,对于顶点数组中,每个数据元素还需要存储指向第一个邻接点的指针,以便于查找该顶点的边信息。 2、图中每个顶...转载 2019-11-22 21:14:04 · 194 阅读 · 0 评论 -
图的邻接矩阵实现
#include<iostream> #define MAXVEX 10/*最大顶点数*/ #define INFINITY 65656/*表示权值无穷*/ using namespace std; typedef int EdgeType; typedef char VertexType; typedef struct { VertexType vexs[MAXVEX]; ...转载 2019-11-22 15:18:12 · 15375 阅读 · 4 评论 -
二叉树查找双亲结点
//递归实现查找双亲结点 void Find_Father(BiTNode *(&T),ElemType data) { if(T ==NULL) return; if(T->lchild != NULL)//当左孩子存在的时候才进行判断,否则程序出错 { if(T->lchild->data == data)...原创 2019-11-15 14:55:45 · 13263 阅读 · 3 评论 -
交换二叉树左右子树
#include <stdio.h> #include <stdlib.h> #define MaxSize 10 typedef char ElemType; typedef struct node { ElemType data; struct node *lchild,*rchild; }BiTNode,*BiTree; void CreateBiTree(...原创 2019-11-15 09:12:49 · 1128 阅读 · 0 评论 -
线索二叉树
#include<stdio.h> #include<stdlib.h> #define Maxsize 10 typedef char ElemType; //线索存储标志为(枚举类型) //Link==0:表示指向左右孩子的指针 //Thread==1:表示指向前驱后继的线索 typedef enum{Link,Thread} PointerTag; /...原创 2019-11-14 14:36:58 · 130 阅读 · 0 评论 -
二叉树的深度,广度遍历(非递归法实现)
深度优先的非递归遍历算法(中序遍历)(借助栈实现) typedef struct BiTNode { DataType data; struct BiTNode *lchild,*rchild; }BiTNode,*BiTree; Ninorder(BiTree T) { Sqstack *S; BiTree p=T; InitStack(S); while(p!=NUL...原创 2019-11-14 11:58:33 · 156 阅读 · 0 评论 -
二叉树的建立与遍历(递归法实现)
设置结点类: typedef struct Node { ElemType data;//存放该结点数据 struct Node *lchild,*rchild;//存放左右孩子指针 }BiTNode,*BiTree; 前序法创建一棵二叉树: CreateBiTree(BiTree *T) { char c; scanf("%c",&c); //空格表示虚结点,如果不是虚结点...原创 2019-11-11 14:05:55 · 410 阅读 · 0 评论 -
树的实现
//创建一个树 # define MaxSize 20 typedef int ElemType; typedef struct node { ElemType child; //孩子结点的下标 struct node *next;//指向下一个孩子结点的指针 } *Childptr; //表头结构 typedef struct { Elemtype data;//存放在...原创 2019-11-11 09:34:46 · 85 阅读 · 0 评论 -
简单模式匹配算法—BF算法
//顺序串的简单模式匹配#include <stdio.h> #include <stdlib.h> #include <math.h> #include <string.h> #define maxsize 256 //建立一个顺序串 typedef struct { char ch[maxsize]; //ch是储存字符串的顺序数组 ...原创 2019-11-04 11:39:10 · 849 阅读 · 0 评论 -
利用栈实现二进制转十进制
#include"pch.h" #include <stdio.h> #include <stdlib.h> #include<math.h> #define STACK_INIT_SIZE 20 //定义栈的最初容量 #define STACK_INCREASEMENT 10 //定义每次增加的容量 //声明结点 typedef char ElemTyp...原创 2019-11-02 11:15:15 · 364 阅读 · 0 评论 -
循环链表解决魔术师发牌问题
#include<stdio.h> #include<stdlib.h> #define CardNumber 13 typedef struct node { int data; struct node *next; }sqlist,*linklist; //创建13个节点的循环链表 linklist createLinkList() { linklist...原创 2019-10-20 21:09:35 · 114 阅读 · 0 评论 -
循环链表模拟约瑟夫环
问题引入: 据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。 问题是,给定了和,一开始要站在什么地方才能避免被处决?Josep...原创 2019-10-16 23:47:57 · 178 阅读 · 0 评论 -
腾讯面试题:快速找到单链表中间结点
方法一:普通方法 #include"pch.h" #include <stdio.h> #include <stdlib.h> //声明结点 typedef struct nodew { char data; struct node* next; } LinkList; //尾插法建立单链表 LinkList *CreateLinkR(); //求单链表长度 in...原创 2019-10-13 23:10:42 · 625 阅读 · 0 评论 -
单链表操作
#include "pch.h" #include "stdio.h" #include <stdlib.h> typedef char Status; typedef char ElemType; //定义一个结点 typedef struct Node { int data; //数据域 struct Node *next; ...原创 2019-10-01 22:05:20 · 62 阅读 · 0 评论