链表与二叉树-数据结构

链表与二叉树-数据结构

    • 创建叶子node节点
    • 建立二叉树
    • 三元组:只考虑稀疏矩阵中非0的元素,并且存储到一个类(三元组)的数组中。

在这里插入图片描述

创建叶子node节点

class Node{
 int no;
 Node next;
 public Node(int no){
  this.no=no;
 } 
}
public class Lbiao {
 Node head;
 int size;
 public void init(){
  head=null;
  size=0;
 }
 public boolean isEmpty(){
  return head==null; //return size==0;
 }
 public void insertT(Node n1){
  n1.next=head;
  head=n1;
  size++;
 }
 public void insertW(Node n1){
  if (isEmpty()){insertT(n1);return;}
  Node p=head;
  while(p.next!=null)
   p=p.next;
  p.next=n1;
  size++;  
 }
 public Node get(int i){
  if ((i<1)||(i>size)) {System.out.println("i超过了范围!");return null;}
  int j=1;Node p=head;
  while(j<i){
   p=p.next;
   j++;
  }
  return p;
 }
 public void delete(int i){
  if (!isEmpty()){
   if ((i<1)||(i>size)){return ;}    
   if (i==1){head=head.next;size--;return;}
   Node p=head;
   int j=1;
   while(j<i-1){
    p=p.next;
    j++;
   }
   p.next=p.next.next;
   size--;   
  }
  else{System.out.println("没有结点用来删除!");}
 }
 public void printLink(){
  Node p;
  p=head;
  while(p!=null){
   System.out.println(p.no);
   p=p.next;
  }
 }
 public void insert(int i,Node n1){
  if ((i<1)||(i>size+1)){System.out.println("超过范围!");  return;}
  if (i==1){
   n1.next=head;
   head=n1;
   size++;
   return ;
  }  
  Node p=head;
  int j=1;
  while(j<i-1){
   p=p.next;
   j++;
  }
  n1.next=p.next;
  p.next=n1;
  size++;  
 }
 
 
 public static void main(String[] args) {
  Lbiao link=new Lbiao();
  link.init();
  link.insertT(new Node(10));
  link.insertT(new Node(20));
  link.insertT(new Node(30));
     link.insertT(new Node(40));
  link.insertT(new Node(50));
  link.printLink();
  link.insert(6,new Node(23));
  link.printLink();
  
 }
}

建立二叉树

class Tree{

int data;

Tree lchild;

Tree rchild;

}

public class Shu {

Tree []t;

public void createT(int m){

t=new Tree[m+1];

for(int i=1;i<=m;i++)

t[i]=new Tree();	

}

public void Zhprintbt(int n){

if (t[n].lchild!=null){

Zhprintbt(2*n);

if (t[n].data!=0)

System.out.print("t["+n+"].data="+t[n].data+"\t");

if (t[n].rchild!=null)

Zhprintbt(2*n+1);

}

else{

if (t[n].data!=0)

System.out.print("t["+n+"].data="+t[n].data+"\t");

if (t[n].rchild!=null)

Zhprintbt(2*n+1);

}	

}	
public void Qprintbt(int n){

if (t[n].data!=0)

System.out.print("t["+n+"].data="+t[n].data+"\t");

if (t[n].lchild!=null)	

Qprintbt(2*n);

if (t[n].rchild!=null)

Qprintbt(2*n+1);

}

public void Hprintbt(int n){

if (t[n].lchild!=null)	

Hprintbt(2*n);

if (t[n].rchild!=null)

Hprintbt(2*n+1);

if (t[n].data!=0)

System.out.print("t["+n+"].data="+t[n].data+"\t");

}
public static void main(String[] args) {

Shu s=new Shu();

s.createT(16);

for(int i=1;i<16/2;i++){

s.t[i].lchild=s.t[i*2];

s.t[i].rchild=s.t[i*2+1];

}

s.t[1].data=11;

s.t[2].data=22;

s.t[3].data=33;

s.t[5].data=44;

s.t[6].data=55;

s.t[7].data=66;

s.t[11].data=77;

s.t[14].data=88;

s.Zhprintbt(2);

System.out.println();

s.Qprintbt(1);

System.out.println();

s.Hprintbt(1);

}

}

三元组:只考虑稀疏矩阵中非0的元素,并且存储到一个类(三元组)的数组中。

0 0 0 0 0 1 2 0 0
23 0 0 0 0 0 0 0 0
0 98 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
3 0 0 0 0 0 3 0 0
(0,0,0) (0,0,0) (0,0,0) (0,0,0) (0,0,0) (0,0,0) (0,0,0)
(5,9,6) (0,6,1) (0,7,2) (1,0,23) (2,1,98) (4,0,3) (4,6,3)

import java.util.Random;
class Sanyuanzu{
 int row;
 int col;
 int value;
 public Sanyuanzu(int row,int col,int value){
  this.row=row;
  this.col=col;
  this.value=value;
 } 
}
public class Xsjz {
 Random r=new Random();
 int [][]jz;
 Sanyuanzu []a;
 public void createjz(int m,int n){  //产生二维数组
  jz=new int[m][n];  //给二维数组jz分配空间,该数组的行是m,列是n
  for(int i=0;i<jz.length;i++)
   for(int j=0;j<jz[0].length;j++)
    jz[i][j]=r.nextInt(100)<=85?0:r.nextInt(99)+1; 
 }
 public void toSan(){
  int c=0,k=0;  //表示非0元素的个数
  for(int i=0;i<jz.length;i++)
   for(int j=0;j<jz[0].length;j++)
    if (jz[i][j]!=0)
     c++;
  a=new Sanyuanzu[c+1];  //给数组分配空间
  for(int i=0;i<a.length;i++)
   a[i]=new Sanyuanzu(0,0,0);  //实例化类为对象 
  a[0].row=jz.length;
  a[0].col=jz[0].length;
  a[0].value=c;
  for(int i=0;i<jz.length;i++)
   for(int j=0;j<jz[0].length;j++)
    if (jz[i][j]!=0){
     k++;
     a[k].row=i;
     a[k].col=j;
     a[k].value=jz[i][j];
    }  
 }
 public void prinjz(){
  for(int i=0;i<jz.length;i++){
   for(int j=0;j<jz[0].length;j++)
    System.out.print(jz[i][j]+"   ");
   System.out.println();
  }
 } 
 public void printsan(){  
  for(int i=0;i<a.length;i++)
   System.out.print("("+a[i].row+","+a[i].col+","+a[i].value+")     ");
 } 
 public static void main(String[] args) {
  Xsjz s=new Xsjz();
  s.createjz(5,8);
  s.prinjz();
  s.toSan();
  s.printsan();
 }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/357442.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

YOLOv8改进 | 可视化热力图 | 支持YOLOv8最新版本密度热力图,和视频热力图

一、本文介绍 本文给大家带来的机制是集成了YOLOv8最新版本的可视化热力图功能,热力图作为我们论文当中的必备一环,可以展示出我们呈现机制的有效性,本文的内容支持YOLOv8最新版本的根据密度呈现的热力图,同时支持视频检测,根据视频中的密度来绘画热力图。 在开始之前给…

薅运营商羊毛?封杀!

最近边小缘在蓝点网上看到一则消息 “浙江联通也开始严格排查PCDN和PT等大流量行为 被检测到可能会封停宽带”。 此前中国联通已经在四川和上海等多个省市严查家庭宽带 (部分企业宽带也被查) 使用 PCDN 或 PT&#xff0c;当用户的宽带账户存在大量上传数据的情况&#xff0c;中…

数据库管理-第141期 DG PDB - Oracle DB 23c(20240129)

数据库管理141期 2024-01-29 第141期 DG PDB - Oracle DB 23c&#xff08;20240129&#xff09;1 概念2 环境说明3 操作3.1 数据库配置3.2 配置tnsname3.3 配置强制日志3.4 DG配置3.5 DG配置建立联系3.6 启用所有DG配置3.7 启用DG PDB3.8 创建源PDB的DG配置3.9 拷贝pdbprod1文件…

【C++】I/O多路转接详解(一)

目录 1. 背景引入1.1 IO的过程1.2 五种IO模型1.2.1 阻塞IO1.2.2 非阻塞IO1.2.3 信号驱动IO1.2.4 IO多路转接1.2.5 异步IO 1.3 同步通信 与 异步通信1.4 阻塞 与 非阻塞1.4.1 阻塞与非阻塞区别1.4.2 设置非阻塞IO 2. select2.1 接口使用2.2 select执行过程2.3 select代码实践 3.…

<网络安全>《9 入侵防御系统IPS》

1 概念 IPS&#xff08; Intrusion Prevention System&#xff09;是电脑网络安全设施&#xff0c;是对防病毒软件&#xff08;Antivirus Programs&#xff09;和防火墙&#xff08;Packet Filter, Application Gateway&#xff09;的补充。 入侵预防系统&#xff08;Intrusio…

JS第一课简单看看这是啥东西

1.什么是JavaScript JS是一门编程语言&#xff0c;是一种运行在客户端(浏览器)的编程语言&#xff0c;主要是让前端的画面动起来&#xff0c;注意HTML和CSS不是编程语言&#xff0c;他俩是一种标记语言。JS只要有浏览器就能运行不用跟Python或者Java一样上来装一个jdk或者Pyth…

2023年算法SAO-CNN-BiLSTM-ATTENTION回归预测(matlab)

2023年算法SAO-CNN-BiLSTM-ATTENTION回归预测&#xff08;matlab&#xff09; SAO-CNN-BiLSTM-Attention雪消融优化器优化卷积-长短期记忆神经网络结合注意力机制的数据回归预测 Matlab语言。 雪消融优化器( SAO) 是受自然界中雪的升华和融化行为的启发&#xff0c;开发了一种…

Docker入门篇(二)—— 命令

Docker入门篇&#xff08;二&#xff09;—— 命令 插播&#xff01;插播&#xff01;插播&#xff01;亲爱的朋友们&#xff0c;我们的Cmake/Makefile/Shell这三个课程上线啦&#xff01;感兴趣的小伙伴可以去下面的链接学习哦~ 构建工具大师-CSDN程序员研修院 一、引言 当…

二叉搜索树的后序遍历序列

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 学习必须往深处挖&…

利用Knife4j注解实现Java生成接口文档

文章目录 1、简介2、生成文档3、系列注解3.1、Api3.2、ApiResponses和ApiResponse3.3、ApiOperation3.4、Pathyvariable⭐3.5、RequestBody3.6、ApiOperationSupport3.7、ApiImplicitParams 和 ApiImplicitParam3.8、ApiModel3.9、ApiModelProperty ​&#x1f343;作者介绍&am…

动手学RAG:汽车知识问答

原文&#xff1a;动手学RAG&#xff1a;汽车知识问答 - 知乎 Part1 内容介绍 在自然语言处理领域&#xff0c;大型语言模型&#xff08;LLM&#xff09;如GPT-3、BERT等已经取得了显著的进展&#xff0c;它们能够生成连贯、自然的文本&#xff0c;回答问题&#xff0c;并执行…

JUC并发编程-异步回调、JMM、volatile

15. 异步回调 Future 设计的初衷&#xff1a;对将来的某个事件结果进行建模&#xff01; 其实就是前端 --> 发送ajax异步请求给后端 但是我们平时都使用CompletableFuture 1&#xff09;异步调用&#xff1a;CompletableFuture 没有返回值的异步回调 public static void ma…

Microsoft Edge 浏览器报错 提示不安全

网站提示不安全 是因为 Microsoft Edge 开了安全过滤 我们需要把这个关掉 打开浏览器的设置&#xff0c;然后 找到隐私选项 找到下边的Microsoft Defender Smartscreen 关掉 Microsoft Edge 支持 Microsoft Defender SmartScreen | Microsoft Learn win10系统下打开网页提示…

【国产MCU】-认识CH32V307及开发环境搭建

认识CH32V307及开发环境搭建 文章目录 认识CH32V307及开发环境搭建1、CH32V307介绍2、开发环境搭建3、程序固件下载1、CH32V307介绍 CH32V307是沁恒推出的一款基于32位RISC-V设计的互联型微控制器,配备了硬件堆栈区、快速中断入口,在标准RISC-V基础上大大提高了中断响应速度…

第一节 分布式架构设计理论与Zookeeper环境搭建

目录 1. 分布式架构设计理论 1. 分布式架构介绍 1.1 什么是分布式 1.2 分布式与集群的区别 1.3 分布式系统特性 1.4 分布式系统面临的问题 2. 分布式理论 2.1 数据一致性 2.1.1 什么是分布式数据一致性 2.1.2 副本一致性 2.1.3 一致性分类 2.2 CAP定理 2.2.1 CAP定…

微服务-微服务Alibaba-Nacos 源码分析(上)

Nacos&Ribbon&Feign核心微服务架构图 架构原理 1、微服务系统在启动时将自己注册到服务注册中心&#xff0c;同时外发布 Http 接口供其它系统调用(一般都是基于Spring MVC) 2、服务消费者基于 Feign 调用服务提供者对外发布的接口&#xff0c;先对调用的本地接口加上…

c++程序的各阶段

c程序四个阶段 预处理阶段 预处理器&#xff08;cpp&#xff09;根据以字符#开头的命令&#xff0c;修改原始的C程序。比如hello.c中第一行的#include<stdio.h>命令告诉预处理器读取系统头文件stdio.h的内容&#xff0c;并把它直接插入程序文本中&#xff0c;结果就得到…

代码随想录算法刷题训练营day19

代码随想录算法刷题训练营day19&#xff1a;LeetCode(404)左叶子之和、LeetCode(112)路径总和、LeetCode(113)路径总和 II、LeetCode(105)从前序与中序遍历序列构造二叉树、LeetCode(106)从中序与后序遍历序列构造二叉树 LeetCode(404)左叶子之和 题目 代码 /*** Definitio…

shell - 正则表达式和grep命令和sed命令

一.正则表达式概述 1.正则表达式定义 1.1 定义 使用字符串描述、匹配一系列符合某个规则的字符串 1.2 了解 普通字符&#xff1a; 大小写字母、数字、标点符号及一些其它符号元字符&#xff1a; 在正则表达式中具有特殊意义的专用字符 1.3 层次分类 基础正则表达式扩展正…

《机器人SLAM导航核心技术与实战》第1季:第7章_SLAM中的数学基础

视频讲解 【第1季】7.第7章_SLAM中的数学基础-视频讲解 【第1季】7.1.第7章_SLAM中的数学基础_SLAM发展简史-视频讲解 【第1季】7.2.第7章_SLAM中的数学基础_SLAM中的概率理论-视频讲解 【第1季】7.3.第7章_SLAM中的数学基础_估计理论-视频讲解 【第1季】7.4.第7章_SLAM中的…
最新文章