![](https://img-blog.csdnimg.cn/20190918140053667.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构基础
数据结构基本知识
愚笨难解
初级
展开
-
用JAVA实现一个走迷宫程序
用JAVA实现一个走迷宫程序本Demo使用三个类一个Test类一个自定义的Stack类一个自定义的Queue类可以实现的功能:1.对于一个写在文本文件中的迷宫,能够将其转换为二维数组用广度优先搜索实现查找最短路径2.可以不定义迷宫的入口和出口,能自动查找到出入口前提是要有一个对应路径的.txt文件这里举个例子吧,我的是"F:/1号迷宫(0,18).txt"路径下运行结果注释写的很详细,这里就不多赘述了package com;import java.io.BufferedRea原创 2021-06-26 20:23:08 · 1977 阅读 · 2 评论 -
哈夫曼树(JAVA版本)
package com.数据结构.树;import java.util.ArrayList;import java.util.Collections;import java.util.List;/**构建哈夫曼树 * 1.使用排序数组 * 2.选出最小的两个权重,构建新的权重,把新权重加紧数组,删除已使用的两个权重 * 3.重复1和2,直到只剩最后一个元素 */public class Lesson16 { static List<HuffmanTree> list原创 2021-06-20 10:21:41 · 66 阅读 · 0 评论 -
线段树(JAVA版本)
package com.数据结构.树;/** * 〈线段树〉 * * @author Demi * @createDate 2020/2/13 */public class SegmentTree<E> { private E[] data;//接收用户传进来的数组 private E[] tree;//线段树 private Merge<E> merge; //初始化数组和线段树并构建线段树 public SegmentT原创 2021-06-20 10:18:23 · 167 阅读 · 0 评论 -
红黑树(JAVA版本)
package com.数据结构.树;/*** 〈红黑树〉** @author Demi* @createDate 2020/2/13*/public class RedBlackTree { private static RedBlackTreeNode nil = new RedBlackTreeNode(); private RedBlackTreeNode root = new RedBlackTreeNode(); //构造空红黑树 public R原创 2021-06-20 10:17:37 · 69 阅读 · 0 评论 -
大顶堆(JAVA版本)
package com.数据结构.树;import java.util.Arrays;/** * 〈最大堆〉 * * @author Demi * @createDate 2020/2/11 */public class MaxHeap<E extends Comparable> { private E[] data;//存数据 private int size;//有效长度 public MaxHeap(int capicity) {原创 2021-06-20 10:16:43 · 174 阅读 · 0 评论 -
栈(JAVA版本)
package com.数据结构.栈;import org.omg.CORBA.Object;/**栈 * */public class Stack<E> { private int maxSize; private int top = -1;//栈顶,默认栈顶为-1 private E[] data;//数组代替栈存放元素 //初始化栈大小 protected Stack(int maxSize){ if(maxSize原创 2021-06-20 10:14:54 · 50 阅读 · 0 评论 -
KMP算法java版本
import java.util.Scanner;public class KMP算法 { //计算目标串的前缀与后缀匹配关系 static void cal_next(String ptr1,int [] next){ char[] ptr = ptr1.toCharArray();//把字符串str1变成字符数组str int plen = ptr1.length(); next[0] = -1;//-1表示不存在相同的最大前缀和最原创 2021-05-23 09:25:39 · 78 阅读 · 0 评论 -
常见六种排序算法(java版本)
什么是排序算法的稳定性?假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。冒泡排序算法时间/空间复杂度最好平均最坏辅助存储稳定O(n)O(n²)O(n²)O(1)Y实现原理:冒泡排序算法使用双层循环嵌套,依次比较相邻的两个元素,按照升/降序,把最大/小的数字冒泡到原创 2021-05-09 16:18:15 · 172 阅读 · 1 评论 -
图-邻接矩阵表示
代码区#include<stdio.h>#include<stdlib.h>#define N 20//定义顶点数据类型typedef int Vertex[N];//定义边的数据类型typedef int Edge[N][N];//定义的图类型typedef struct Graph{ Vertex vers;//int Vers[N]; //存储定点的信息 Edge edges;//int edges[N][N];//存储边的信息 int vernu原创 2020-05-14 17:24:12 · 315 阅读 · 0 评论 -
赫夫曼二叉树
代码区#include<stdio.h>#include<stdlib.h>#include<string.h>typedef struct HuffNode{//赫夫曼结点 int weight,parent,lchild,rchild;//权值,双亲,左/右孩子 }HuffNode;typedef struct HuffTree{//动态分配数组存储赫夫曼树 int n;//赫夫曼树叶子结点个数 HuffNode *hf;//结点向下递推 }原创 2020-05-14 17:19:30 · 130 阅读 · 0 评论 -
线索二叉树
代码区#include "stdio.h"#include "stdlib.h"//看图理解这节 typedef char ElemType;typedef enum {Link,Thread} PointerTag/*指针标记*/;//Link == 0,指针.Thread == 1,线索 typedef struct BiThrNode{ ElemType data;//数据域 struct BiThrNode *lchild,*rchild;//左右孩子指针 PointerTa原创 2020-05-14 16:46:11 · 113 阅读 · 0 评论 -
普通三域结点二叉树全操作
普通三域结点二叉树全操作#include<stdio.h>#include<stdlib.h> //定义二叉树链表 typedef struct BiNode{ char data; struct BiNode *lchild,*rchild; }BiNode,*BiTree;//定义二叉树结点类型和二叉树类型 //定义栈的元素类型 typedef BiTree ElemType; //定义栈的类型 typedef struct SqStack{原创 2020-05-14 16:42:49 · 141 阅读 · 0 评论 -
矩阵三元组
数组和广义表->矩阵三元组#include "stdio.h"#define M 3 //最大行 #define N 5 //最大列 #define MAXSIZE 100 //存储最大数据空间 typedef int ElemType; //每行存放的数据 typedef struct Triple{//Triple三元组 int i,j;//第i行,第j列 ElemType v;//元素的值 }Triple;//设定第1行存放总行/列数,空间 typedef struc原创 2020-05-14 16:30:01 · 1848 阅读 · 2 评论 -
BF算法
BF(暴风)算法#include "stdio.h"#define MAXSIZE 255//用户可用的最大串长 typedef unsigned char SString[MAXSIZE + 1];//定义字符串类型SString,是一个无符号的字符数组类型,长度为256 //typedef int IntArr[10];//定义整型数组类型 IntArr IntArr a;a是数组,长度10//求字符串的长度int StrLength(SString S){ int i = 1;//定义原创 2020-05-14 16:27:40 · 152 阅读 · 0 评论 -
KMP算法原理
KMP算法指在主串S中有与模式串T一样的字符串,找出主串中从第pos个位置开始与模式串相匹配的位置的前一个位置最慢的KMP算法和最简单的BF算法时间复杂度是一样的,原理:字符位置: 1 2 3 4 5 6 7 8 9例主串S : a b a b c d c d e模式串T : a b c第三个位置不匹配,如果是BF算法,则模式串T向后移动一位,直到找出相等的字符串而KMP算法可以直接...原创 2020-04-10 15:37:59 · 202 阅读 · 0 评论 -
链队列全操作
#include "stdio.h"#include "stdlib.h"#define ERROR -1#define OK 1//链式存储 typedef int QElemType;typedef int Status;typedef struct QNode{ QElemType data; struct QNode *next;}QNode,*Queueptr;t...原创 2020-04-02 12:01:38 · 84 阅读 · 0 评论 -
顺序栈-进制转换
#include "stdio.h"#include "stdlib.h" #define STACK_INIT_SIZE 100 #define OVERFLOW -1#define OK 1#define ERROR 0#define STACKINCREMENT 1 #define N 2//N为将要转换的进制 typedef int SElemType;typedef ...原创 2020-03-27 16:32:20 · 334 阅读 · 0 评论 -
顺序栈全操作
#include "stdio.h"#include "stdlib.h" #define STACK_INIT_SIZE 100 #define OVERFLOW -1#define OK 1#define ERROR 0#define STACKINCREMENT 1 typedef int SElemType;typedef struct SqStack{ SElemTy...原创 2020-03-27 16:31:14 · 141 阅读 · 0 评论 -
链栈全操作
#include <Stdio.h>#include <Stdlib.h>#define OK 1#define ERROR 0typedef int SElemType;typedef struct node { SElemType data; struct node *next;}StackNode, *LinkStack;/* ...原创 2020-03-27 16:29:52 · 408 阅读 · 2 评论 -
单向链表全操作
#include "stdio.h"#include "stdlib.h"#define OVERFLOW -1#define OK 1#define ERROR 0typedef struct student{ char no[12]; char name[10]; int score;}student;typedef student ElemType;typedef ...原创 2020-03-19 21:15:25 · 97 阅读 · 0 评论 -
顺序线性表的应用
#include "stdio.h"#include "stdlib.h" //1.学生2.线性表3.顺序表4.编写操作函数5.main函数调用顺序表 typedef struct student{ char no[12]; char name[8]; int score;}student;typedef struct book{ char no[12]; char name...原创 2020-03-19 21:15:49 · 123 阅读 · 0 评论 -
单向链表练习
构造学生链表并查找学生信息#include <stdio.h>#include <string.h>#include <stdlib.h>typedef struct student//STUDENT = struct student{int num;char name[10];float score;struct student *next;...原创 2020-03-19 21:15:55 · 115 阅读 · 0 评论