蓝桥杯基础数据结构(java版)

引言

数据结构=数据+结构。所以数据结构是一个抽象的概念。其目的是为了更好的组织数据方便数据存储。下面我们来看一些简单的数据储存方式

输入和输出

这里先介绍java的输入和输出。简单引入,不过多详细介绍,等我单一写一篇的时候这里会挂上链接
简单的就是Scanner,使用方法如下:

Scanner scan = new Scanner(System.in);//引包记得用ctrl+shift+o,不引包会报错的

放我们获取键盘输入的时候,可查看一下用法:

int a = scan.nextInt();//从键盘获取一个数字
String b = scan.next();//从键盘获取一个字符串
//多个数字或者字符串了可以用空格分隔,也可以用换行符分割

输出就是:

System.out.println();//ln为换行输出,不加ln就可以不换行输出。有心情就自己去试

数组

数组是 我们常见的一个简单的数据结构,其引用方式为:

数据类型[] 数组名 = new 数据类型[size];//size为数组的大小,记得替换为数字

引入数组知识–下标:下标是为了查找数据的,因为我们储存过多的数据,所以利用下标来进行元素的访问的,第i个数的下标为i-1。
其次每个数组只能存放单一的元素,一个数据只能储存一种类型的元素。
实例:

int[] arr = new int[10];//创建一个有10个数字元素数组
String[] arr = new String[10];//创建一个有10个字符元素的数组

看到这里是不是觉得有点空,拿来看一道简单的题目吧;

  1. 从键盘获取10个数字并输出
import java.util.Scanner;public class Main{public static void main(String[] args) {Scanner scan = new Scanner(System.in);int[] a = new int[10];//引入数组用来存储数据for (int i = 0;i<10;i++){a[i]= scan.nextInt();//利用for循环来多次读入数据}for (int i = 0; i < 10; i++) {System.out.println(a[i]);//for循环遍历数据输出}}
}

二维数组

二维数组就是一维数组的扩展,其实例化方式为

数据类型[][] 数组名 = new 数据类型[size][size];//size大小

实例:

int[][] arr = new int[10][10];
char[][] chars = new char[10][10];

说到了二维数组,那这里就不得不提到Arrays函数了。Arrays函数提供了一种转换数组的功能。下边看
实例

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);String b= scan.next();char[] chars =b.toCharArray();for (int i = 0; i < chars.length; i++) {System.out.print(chars[i] + " ");}}
}

这个操作也可以用到二维数组的读入中,大家可以自己尝试,不能再多说了,在多说就想把这就该改为付费内容了

List

list集合其实是一个可变长度的数组。应用于我们存储的数据量未知的情况,也就是数组不知道怎么开空间的时候.

语法格式

List<Integer> list = new LinkedList();//Integer是int的封装类行,<>中就是代表集合的数据类型,不过这里要用封装类型
List<Integer> list1 = new ArrayList<>();//也可以用这个,具体一个是链表实现,一个是数组实现

相关操作

数组我们没有细说储存,细说牵扯的就比较多了。数组我们是开辟了一片空间通过下标来储存对应的元素,而链表是我们开辟了一个头节点,然后通过增/删的操作来加长/减短链表的大小。看图:

函数作用
add(value)添加元素
remove(index)删除元素
isEmpty判断集合是否为空
contains(value)是否包含该元素
size返回几个元素个数
get(index)获取元素

相关例题

Set(集合)

上边我们说了list集合,set集合和list集合都是用来存储的,其差异在与set集合不会储存重复元素,也就是说其元素存在唯一性。
实现

Set<Integer> set = new HashSet();//依旧Integer代表的是封装数据类型

相关操作

函数作用
add(value)添加元素
remove(index)删除元素
contains(value)是否包含该元素
size返回几个元素个数
clear清空元素

相关例题

给出n个数字,请问其中不重复的数字有几个

import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;public class Set_collect {public static void main(String[] args) {Scanner scan = new Scanner(System.in);Set<Integer> set = new HashSet<>();int n = scan.nextInt();//获取输入的数字个数nfor (int i = 0; i < n; i++) {//进行n次循环int tmp = scan.nextInt();//获取数字set.add(tmp);//将获取的数字加入到set集合中}System.out.println(set.size());}
}

样例:
在这里插入图片描述

Map(键值)

Map集合是一种特殊的集合,其储存方式为key-value形式,就像字典那样每一个拼音下边都很多汉字
实现

Map<Integer,Integer> map = new HashMap<>();//Integer依旧为封装数据类型,可替换

相关操作

函数作用
put(key,value)添加元素
get(key)获取与key对应的value值
size()返回几个元素个数
entrySet将map集合转化成为一个set集合,方便遍历
getOrdefault(key,value)获取指定的key和value,没有则返回默认值

相关例题

输入n个数据,统计其重复个数,最后输出;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;public class list_map {public static void main(String[] args) {Scanner scan = new Scanner(System.in);Map<Integer,Integer> map = new HashMap<>();int n = scan.nextInt();for (int i = 0; i < n; i++) {int tmp = scan.nextInt();if (map.containsKey(tmp)&!map.isEmpty()){map.put(tmp, map.get(tmp)+1);}else {map.put(tmp,1);}}for (Map.Entry<Integer, Integer> entry : map.entrySet()) {System.out.println(entry.getKey()+" "+entry.getValue());}}
}

代码运行结果
在这里插入图片描述

Stack(栈)

栈是一个比较熟悉的词,下边简单解释,它是只允许在一段进行插入和删除的线性表,只能在一端进行插入和删除,就以为这最先进入的元素会最后出来,这也对应了栈的特点,先进后出。

相关操作

函数作用
push(value)添加元素
pop()删除栈顶元素
peek()返回栈顶元素,但不删除
isEmpty判断是否为空

相关例题

Queue(队列)

队列与栈有所不同,栈是只能在一端插入和删除,而队列是一头出一头进,你也可以理解成为耳朵出右耳朵进。这也对应了其特点:先进先出

相关操作

函数作用
add(value)添加元素
poll()删除队头元素
peek()返回队头元素,但不删除
isEmpty判断是否为空

相关例题

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

133基于matlab的智能微电网粒子群优化算法

基于matlab的智能微电网粒子群优化算法&#xff0c;输出微型燃气轮机、电网输入微网运行计划、储能运行计算。程序已调通&#xff0c;可直接运行。 133智能微电网粒子群优化算法 (xiaohongshu.com)

【Nuxt3】Nuxt3脚手架nuxi安装项目和项目目录介绍

简言 最近学了Nuxt3,并使用它创建了自己的小网站。记录下学习到的nuxt3内容。 Nuxt3官网 Nuxt 是一个免费的开源框架&#xff0c;可通过直观、可扩展的方式使用 Vue.js 创建类型安全、高性能、生产级的全栈 Web 应用程序和网站。 支持SSR、SPA、建立静态网站&#xff0c;也可以…

软件测试|Selenium StaleElementReferenceException 异常分析与解决

简介 Selenium 是一个流行的自动化测试工具&#xff0c;用于模拟用户与网页交互。然而&#xff0c;当我们在使用 Selenium 时&#xff0c;可能会遇到一个常见的异常&#xff0c;即 StaleElementReferenceException。这个异常通常在我们尝试与网页上的元素交互时抛出&#xff0…

easyexcel 3.0.x 版本实现指定列 锁定以及指定列隐藏

1&#xff1a;效果示例 2&#xff1a;代码示例&#xff1a; UnLockCell.java package com.example.juc.zhujie;/*** Author * Date Created in 2023/12/19 10:09* DESCRIPTION:* Version V1.0*/import java.lang.annotation.*;/*** 用于标记锁定哪些列不需要锁定* author 12…

P2257 YY的GCD(莫比乌斯)

题目描述 神犇 YY 虐完数论后给傻 kAc 出了一题 给定 N,M&#xff0c;求 1≤x≤N&#xff0c;1≤y≤M 且 gcd(x,y) 为质数的(x,y) 有多少对。 输入格式 第一行一个整数 T 表述数据组数。 接下来 T 行&#xff0c;每行两个正整数&#xff0c;N,M。 输出格式 T 行&#xf…

Angular系列教程之zone.js和NgZone

文章目录 什么是zone.jsZone的工作原理Zone的常见用途NgZone&#xff1a;Angular中的zone.js使用NgZone使用NgZone执行代码使用NgZone外部检测 结论 什么是zone.js 在Angular中&#xff0c;zone.js是一个非常重要的库&#xff0c;它为我们提供了一种跟踪和管理异步操作的机制。…

数据结构学习笔记——查找算法中的树形查找(红黑树)

目录 一、红黑树的定义&#xff08;一&#xff09;黑/红结点、叶子节点&#xff08;二&#xff09;黑色完美平衡 二、红黑树的性质&#xff08;一&#xff09;黑高和高度&#xff08;二&#xff09;叶子结点个数 三、红黑树与AVL对比 一、红黑树的定义 红黑树是一棵二叉排序树…

UML-类图和类图转化为代码

提示&#xff1a;文章详细的讲解了类图的四种关系&#xff0c;以及每种关系如何转化为对应的代码。 UML-类图和类图转化为代码 一、类于类之间的关系1.依赖关系2.关联关系(1) 单向关联(2) 双向关联(3) 自关联(4) 聚合关联(has-a)(5) 组合关联&#xff08;contains-a&#xff09…

Android Studio下载gradle反复失败

我的版本&#xff1a;gradle-5.1.1 首先检查设置路径是否正确&#xff0c;参考我的修改&#xff01; 解决方案 1.手动下载Gradle.bin Gradle Distributions 下载地址 注意根据编译器提示下载&#xff0c;我这要求下载的是bin 而不是all 2.把下载好的整个压缩包放在C:\Users\…

如何使用服务器?

文章目录 如何使用服务器&#xff1f;一、工具二、第一种方法三、第二种方法四、实例 个人经验 如何使用服务器&#xff1f; 本文详细介绍了如何利用服务器跑模型&#xff0c;具体流程如下&#xff1a; 一、工具 ToDeskPyCharm Professional移动硬盘JetBrains GatewayGit 二…

大模型背景下计算机视觉年终思考小结(一)

1. 引言 在过去的十年里&#xff0c;出现了许多涉及计算机视觉的项目&#xff0c;举例如下&#xff1a; 使用射线图像和其他医学图像领域的医学诊断应用使用卫星图像分析建筑物和土地利用率相关应用各种环境下的目标检测和跟踪&#xff0c;如交通流统计、自然环境垃圾检测估计…

Vue知识总结-下

VUE-组件间通信 组件的自定义事件 概述&#xff1a;是一种组件间通信的方式,适用于&#xff1a;子组件>父组件使用场景&#xff1a;A是父组件,B是子组件,B给A传递数据,那么需要在A组件中绑定自定义事件(事件的回调也在A中)使用步骤 绑定自定义事件&#xff1a; 第一种方式…