数据结构
肥学
本人热爱编程,会把平时学习到的知识和有趣的见闻分享出来,点个关注一起学习吧。
展开
-
树的存储和图的存储结构总结
目录标题树图#define max_size 100树//双亲表示法struct Node{ int data; int parent;//记录父节点再数组的位置};struct Tree { Node TreeArr[max_size]; int n;//节点数};//孩子表示法struct childNode { int childIndex; childNode* nextChild;};struct firstChild { int data; chil原创 2022-05-09 08:25:50 · 547 阅读 · 1 评论 -
二叉树寻找前驱的普通方法和线索二叉树对比
目录标题普通方法缺点线索二叉树注意这里我们只给出了中序的线索二叉树实现,但是再实现先序线索二叉树的时候要避免死循环的情况要对最后一个节点的tagClueLChild修改为true普通方法//结构体typedef struct TreeNode { int data; struct TreeNode* lchild; struct TreeNode* rchild;}*BT,TN;//寻找二叉树中序遍历的前驱BT pre;void findPreInorder(BT root,i原创 2022-05-06 07:48:53 · 769 阅读 · 0 评论 -
二叉树的链式存储和顺序存储对比
目录标题顺序存储需要注意的是链式存储值得注意的是点击直接资料领取顺序存储需要注意的是对于节点个数为n的二叉树,在顺序存储的时候对于位置为i的节点i的左孩子为2ii的右孩子为2i+1i的父节点为(i/2)向下取整特别的如果这棵树是完全二叉树那就爽了又多了几个可以用的条件当i<=(n/2)向下取整 为分支节点当i>(n/2)向下取整 为叶子节点#include<stdio.h>#define SIZE 100typedef struct Node {原创 2022-05-06 07:09:30 · 784 阅读 · 0 评论 -
KMP算法的几种写法
目录标题简介主串和字串和next数组都从零位置开始主串和字串和next数组都从1位置开始重头戏计算next数组求nextval简介KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)。KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是通过一个next()函数实现,函数本身包含了模式串的局部匹配信息。KMP算法的时间复杂度O(m+n)原创 2022-05-01 09:38:27 · 651 阅读 · 1 评论 -
任何一颗二叉树的叶子结点在先序、中序、后序遍历序列中的相对次序不变
任何一颗二叉树的叶子结点在先序、中序、后序遍历序列中的相bai对次序是不发生改变的,解释如下:因为根据三个遍历的次序和特点:前序是根左右、中序是左根右、后序是左右根,因此相对次序发生变化的都是子树的根,也就是分支结点。例如:对于一个满3层二叉树,按每层从左到右按除0自然数编号(第一层,1;第二层,2,3;第三层,4,5,6,7),然后先序遍历是1245367,对编号1的根节点来说245 是左分支的,367是右分支;而对于2来说,4是左边,5是右边;对于3, 6在左边,7在右边,所以先序遍历是根左右,原创 2020-12-27 20:46:54 · 19566 阅读 · 1 评论 -
矩阵计算的压缩存储
对角矩阵的位置计算(行优先)import java.util.*;public class Main { public static int CountingElements(int n) { return n+n*(n-1)/2;//因为满足等差数列,公差为1 } public static int CoordinatesMap(int row,int col) { if(row<col) {//如果是对称矩阵的上半部分 int a; a=row; row=c原创 2022-03-20 10:42:12 · 714 阅读 · 0 评论 -
Java实现括号匹配
import java.util.*;public class Main { public static void main(String[] args) { Stack<String> stack=new Stack<String>(); String s=")()))"; String[] arr=s.split(""); int num=0; for(int i=0;i<arr.length;i++) { if(arr[i].equal原创 2022-03-11 21:19:31 · 1813 阅读 · 0 评论 -
队列的链式实现
import java.util.*;public class Main { static Queue head,trail; public void InitQueue() { Queue queue=new Queue(); head=queue; trail=queue; } public boolean isEmpty(Queue queue) { if(queue.next==null)return true; else return false; } pu..原创 2022-03-08 21:31:44 · 541 阅读 · 0 评论 -
队列的顺序实现
import java.util.*;public class Main { public Queue InitQueue() { Queue queue=new Queue(new int[10]); queue.front=0; queue.rear=queue.data.length-1;//good不然会存在最后一位为空就显示栈满 return queue; } public Queue EnQueue(Queue queue,int n) { //这个判断是为了出..原创 2022-03-07 21:07:29 · 497 阅读 · 0 评论 -
Java实现链式栈
package lanqiao;import java.util.*;public class Main { public static Stack InitStack() { Stack stack=new Stack(0);//构建一个节点stack当作头节点data表示stack长度 return stack; } public static Stack Push(Stack stack,int num) {//头插法 if(stack.next!=null) {原创 2022-03-05 21:02:07 · 724 阅读 · 0 评论 -
Java实现栈的顺序存储
import java.util.*;public class Main { public static Stack InitStack() { Stack stack=new Stack(new int[10],-1);//构建长度为10的stack return stack; } public static Stack Push(Stack stack,int num) { if(stack.top==stack.data.length-1) System.out.p.原创 2022-03-05 20:39:32 · 703 阅读 · 0 评论 -
数据结构严蔚敏版课后答案
样例点击直接资料领取回复数据结构课后答案即可获取这里有python,Java学习资料还有有有趣好玩的编程项目,更有难寻的各种资源。反正看看也不亏。原创 2021-12-22 13:31:37 · 1425 阅读 · 0 评论 -
天气炎热,给大佬们找几棵树乘凉——数据结构树
今天天气很热,我找了几棵树给大家乘凉希望大佬们在暑假过的愉快啊二叉树满足以下两个条件的树就是二叉树:本身是有序树(若将树中每个结点的各子树看成是从左到右有次序的(即不能互换),则称该树为有序树(Ordered Tree))。树中包含的各个节点的度不能超过 2,即只能是 0、1 或者 2。简单地理解,二叉树(Binary tree)是每个节点最多只有两个分支(即不存在分支度大于 2 的节点)的树结构。通常分支被称作“左子树”或“右子树”。二叉查找树要了解红黑树之前,免不了先看下二叉查找树.原创 2021-07-22 08:16:49 · 846 阅读 · 77 评论 -
对不起java链表加上泛型真的可以为所欲为
java小菜鸡,欢迎大佬指正package test1;import java.util.Scanner;public class linked { static node head; static node ans; public void add(String value){ node num=new node(value); if(head==null){ head=num; return;原创 2021-04-19 20:17:41 · 285 阅读 · 1 评论 -
java写的单链表和C语言的单链表对比
//可能你会问为什么非要建立两个类呢,确实一个类也行。但是建两个确实简单而且程序看起来更简介。package test1;public class node { String value; node next; public node(String value){ this.value=value; }}package test1;import java.util.Scanner;public class linked { stat原创 2021-04-16 15:02:20 · 516 阅读 · 1 评论