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

这篇具有很好参考价值的文章主要介绍了蓝桥杯基础数据结构(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();//获取输入的数字个数n
        for (int i = 0; i < n; i++) {//进行n次循环
            int tmp = scan.nextInt();//获取数字
            set.add(tmp);//将获取的数字加入到set集合中
        }
        System.out.println(set.size());
    }
}

样例:
蓝桥杯基础数据结构(java版),蓝桥杯,数据结构,java

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());
        }
    }
}

代码运行结果
蓝桥杯基础数据结构(java版),蓝桥杯,数据结构,java

Stack(栈)

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

相关操作

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

相关例题

Queue(队列)

队列与栈有所不同,栈是只能在一端插入和删除,而队列是一头出一头进,你也可以理解成为耳朵出右耳朵进。这也对应了其特点:先进先出文章来源地址https://www.toymoban.com/news/detail-794525.html

相关操作

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

相关例题

到了这里,关于蓝桥杯基础数据结构(java版)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java基础---常用类大全以及各数据结构的方法大全

    目录 前言 一、Math类 二.Scanner类 三、String类、StringBuilder和StringBuffer类 💖String类 💖StringBuilder和StringBuffer 四.Arrays类 五.Random类 六.时间类 七.ArrayList顺序表 八、LinkedList与链表 九.Stack栈和Queue队列 十.PriorityQueue优先级队列,堆 🎁博主介绍:博客名为tq02,已学C语言、JavaSE,目

    2024年02月16日
    浏览(30)
  • JAVA基础学习笔记-day14-数据结构与集合源码2

    博文主要是自己学习JAVA基础中的笔记,供自己以后复习使用,参考的主要教程是B站的 尚硅谷宋红康2023大数据教程 君以此始,亦必以终。—左丘明《左传·宣公十二年》 7.1 List接口特点 List集合所有的元素是以一种 线性方式 进行存储的,例如,存元素的顺序是11、22、33。那

    2024年01月18日
    浏览(52)
  • [数据结构——递归]母牛的故事(蓝桥杯1004)

    一、题目内容 题目描述: ​ 有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛? 输入格式: 输入数据由多个测试实例组成,每一个测试实例占一行,包括一个整数n(0n55),n的含义

    2024年02月02日
    浏览(25)
  • Java 学习路线:基础知识、数据类型、条件语句、函数、循环、异常处理、数据结构、面向对象编程、包、文件和 API

    Java 是一种由 Sun Microsystems 于 1995 年首次发布的编程语言和计算平台。Java 是一种通用的、基于类的、面向对象的编程语言,旨在减少实现依赖性。它是一个应用程序开发的计算平台。Java 快速、安全、可靠,因此在笔记本电脑、数据中心、游戏机、科学超级计算机、手机等领

    2024年03月24日
    浏览(76)
  • 数据结构--》从数据结构开始,打好算法基础

    目录 数据结构的基本概念 数据结构的三要素 算法的基本概念 数据结构的基本概念         在学习某个知识之前,我们是否都有问过自己我们到底在学习的目的是什么?学习数据结构也一样,我们学习数据结构 主要是为了 用程序把现实世界的问题信息化;用计算机高效

    2024年02月09日
    浏览(36)
  • 基础数据结构:数组介绍

    程序设计 = 数据结构+算法 说到数据结构是什么,我们得先来谈谈什么叫数据。 正所谓\\\"巧妇难为无米之炊’,再强大的计算机,也是要有\\\"米’下锅才可以的,否则就是一堆破铜烂铁 这个\\\"米\\\"就是数据。 数据: 是描述客观事物的符号,是计算机中可以操作的对象,是能被计算

    2024年02月11日
    浏览(37)
  • 数据结构基础-数组

    概述 定义 在计算机科学中,数组是由一组元素(值或变量)组成的数据结构,每个元素有至少一个索引或键来标识 In computer science, an array is a data structure consisting of a collection of elements (values or variables), each identified by at least one array index or key 因为数组内的元素是 连续存储 的,

    2024年02月07日
    浏览(32)
  • c++基础数据结构

    基础数据结构 目录 • 线性结构 • 二叉堆 • 并查集 • 哈希表 • 应用举例 一、线性结构 基础知识 • 数组 • 带头结点的双链表 – He a d 结点 : 虚拟头结点 – Fir s t 结点 : 第一个有实际内容的结点 • 队列 : 循环队列与 Open-Close 表 例 1. 最小值 • 实现一个 n 个元素的线性

    2024年02月10日
    浏览(27)
  • 数据结构基础-队列

    概述 计算机科学中,queue 是以顺序的方式维护的一组数据集合,在一端添加数据,从另一端移除数据。习惯来说,添加的一端称为 尾 ,移除的一端称为 头 ,就如同生活中的排队买商品 In computer science, a queue is a collection of entities that are maintained in a sequence and can be modified by

    2024年02月08日
    浏览(24)
  • 【算法基础】数据结构

    826. 单链表 - AcWing题库 827. 双链表 - AcWing题库 828. 模拟栈 - AcWing题库 3302. 表达式求值 - AcWing题库 遍历输入的操作 如果是数字就存入num的堆栈 (同时注意123,2123这种长数字要一次性存入) 如果是(  直接存入op的堆栈 如果是  )就一直运算,直到遇到( 如果是操作符(如

    2024年02月12日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包