Java栈的实现数组和链表
一、栈结构
栈是一种,先进后出,后进先出的数据结构,只有一端能够进行操作,是一种操作受限制的线形表
二、栈的实现
1. 通过数组实现1 2 3 import java.util.Arrays;4 5 //栈数组实现6 public class ArrayStack {7 //定义一个数组存储数据8 private String stack[];9 //栈中元素个数
10 private int count;
11 //栈大小
12 private int n;
13
14 public ArrayStack(int n) {15 this.stack = new String[n];
16 this.n = n;
17 this.count = 0;
18 }
19
20 @Override
21 public String toString() {22 return "ArrayStack{" +
23 "stack=" + Arrays.toString(stack) +
24 ", count=" + count +
25 ", n=" + n +
26 ‘}‘;
27 }
28
29 /**
30 * push数据
31 *
32 * @param item
33 * @return
34 * @throws Exception
35 */
36 public boolean push(String item) throws Exception {37 if (n == count) {38 throw new Exception();
39 }
40 stack[count] = item;
41 count++;
42 return true;
43 }
44
45 public String pop() throws Exception {46 if (n == 0) {47 throw new Exception();
48 }
49 String tmp = stack[count - 1];
50 stack[count-1] = null;
51 count--;
52 return tmp;
53
54 }
55
56 public static void main(String[] args) throws Exception {57 ArrayStack arrayStack = new ArrayStack(5);
58
59 arrayStack.push("a");
60 System.out.println(arrayStack);
61
62 arrayStack.push("b");
63 System.out.println(arrayStack);
64
65 String pop = arrayStack.pop();
66 System.out.println(pop);
67 System.out.println(arrayStack);
68
69
70 }
71
72 }
- 通过链表实现
链表节点
想学习交流HashMap,nginx、dubbo、Spring MVC,分布式、高性能高可用、MySQL,redis、jvm、多线程、netty、kafka、的加尉xin(同英):cgmx9880 扩列获取java进阶资料学习,无工作经验不要加哦!
1 public class Node {2 public String data;3 public Node next;4 5 public Node() {6 }7 8 public Node(String data) {9 this.data = data;
10 }
11
12 public Node(String data, Node next) {13 this.data = data;
14 this.next = next;
15 }
16
17 @Override
18 public String toString() {19 return "Node{" +
20 "data=‘" + data + ‘\‘‘ +
21 ‘}‘;
22 }
23 }
实现
1 public class LinkedListStack {2 private Node head;3 4 public LinkedListStack() {5 }6 7 @Override8 public String toString() {9 StringBuffer sb = new StringBuffer();
10 Node tmp = head;
11 while (tmp!=null){12 sb.append(tmp.data).append(",");
13 tmp = tmp.next;
14 }
15
16 return sb.toString();
17 }
18
19 public boolean push(String item){20 head = new Node(item,head);
21 return true;
22 }
23
24 public String pop() throws Exception{25 if(head==null){26 throw new Exception();
27 }
28
29 String tmp = head.data;
30 head =head.next;
31 return tmp;
32 }
33
34 public static void main(String[] args) throws Exception{35 LinkedListStack stack = new LinkedListStack();
36 stack.push("a");
37 System.out.println(stack);
38
39 stack.push("b");
40 System.out.println(stack);
41
42 String pop = stack.pop();
43 System.out.println(pop);
44 System.out.println(stack);
45
46
47 }
48 }
Java栈的实现数组和链表相关推荐
- 保存数组_面试官:讲一讲你对据结构——数组、链表、栈、队列的理解
一.解释定义 1. 数据结构: 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合.再简单描述一下:数据结构就是描述对象间逻辑关系的学科. 如果还是不太清楚下面会举例说明的. 2. 数据存储结 ...
- 数组和链表的增删改查速度比较
数组查询快,增删慢 链表增删快,查询慢 首先我们要知道什么是数组什么是链表,数组和链表都有什么特点,那么这道题才好解答,数组是有序的元素序列,是多个相同类型数据的组合,而链表是一种物理存储单元上非连续 ...
- JAVA day16、17 数据结构(栈、队列、数组、链表、红黑树)
一.什么叫数据结构? 数据结构是相互之间存在一种或多种特定关系的数据元素的集合,即带"结构"的数据元素的集合."结构"就是指数据元素之间存在的关系,分为逻辑结构 ...
- Java笔记整理五(Iterator接口,泛型,常见数据结构(栈,队列,数组,链表,红黑树,集合),jdk新特性,异常,多线程,Lambda表达式)
Java笔记整理五 1.1Iterator接口 Collection接口与Map接口主要用于存储元素,而Iterator主要用于迭代访问(即遍历)Collection中的元素,因此Iterator对象 ...
- 数据结构之数组、链表、栈和队列
1.数组 1.1:概念 数组是一种线性表数据结构,它用一组连续的内存空间,来存储一组具有相同类型的数据.这里我们要抽取出三个跟数组相关的关键词:线性表,连续内存空间,相同数据类型:数组具有连续的内存空 ...
- java 二维链表_Java数据结构与算法----数组与链表
数据类型 1 数据类型介绍 数据类型的分类(按照结构划分):线性结构和非线性结构 线性结构:线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系 线性结构有两种不同的存储结构,即顺序 ...
- 牛客网Java刷题知识点之数组、链表、哈希表、 红黑二叉树
不多说,直接上干货! 首先来说一个非常形象的例子,来说明下数组和链表. 上体育课的时候,老师说:你们站一队,每个人记住自己是第几个,我喊到几,那个人就举手,这就是数组. 老师说,你们每个人记住自己前面 ...
- c++使用单向链表存储一组有序数据_《一起学习java和数据结构》系列-数组和链表...
数组 数组是一个线性表数据结构.它用一段连续的内存地址空间,来存储一些相同类型的数据. 从上面的定义,我们不难看出几个关键词. 线性表:顾名思义,线性表就是数据排列成一条线的数据结构.每一个线性表只有 ...
- echart data放入数组_线性表(数组、链表、队列、栈)详细总结
线性表是一种十分基础且重要的数据结构,它主要包括以下内容: 数组 链表 队列 栈 接下来,我将对这四种数据结构做一个详细的总结,其中对链表实现了十几种常见的操作.希望对你有所帮助. 1.数组 数组(A ...
最新文章
- 全栈工程师的学习笔记与工作记录
- SQL 性能优化梳理 —— 基本概念、创建时优化、查询时优化
- box2d 遍历世界中 body 的方法
- 从键盘输入一个字符,判断其是不是大写字母,如果是则请输出这个大写字母,如果不是请输出“这不是一个大写字母”的英文信息(要求:能连续输出直到输出“#”结束)。
- python爬取哔哩哔哩视频_Python实现视频爬取下载
- 程序员会写诗是怎样的体验
- jQuery学习之二---jq核心
- 按创建日期删除指定日期之前的文件夹及文件夹下的所有子目录
- Java的Socket编程C/S小例子
- java读取linux配置文件_Java读取配置文件的几种方法
- 免费logo设计在线生成(不定时更新)
- R先生一步步教你用EasyExcel导出包含多图片的Excel
- 【一起入门NLP】中科院自然语言处理作业五:BiLSTM+Attention实现SemEval-2010 Task 8上的关系抽取(Pytorch)【代码+报告】
- P3975 [TJOI2015]弦论 - 后缀自动机(SAM)
- 记工商银行软件开发中心北京研发部面试——人工智能研发岗
- ups计算软件_什么是UPS?为什么要用UPS?
- jdk配置教程详(sha)细(gua)版
- 5SHX0660F0001 IGCT ABB 5SHX0660F0001 3BHL00386P0101
- 智遥工作流开发ECR(工程变更申请单)流程
- 重新启动计算机前控制台无法刷新,重新安装.NET framework 3.5以准备Websense安装
热门文章
- UML-认识六种箭头,轻松读懂UML图
- 后端技术精选 - 收藏集 - 掘金
- taobao.item.update.listing( 一口价商品上架 )
- Egg http proxy
- aliexpress商品详情API接口(速卖通商品详情页面数据接口)
- 会议室预约系统 会议预约 会议预约触摸屏 会议预约管理系统
- VMware workstation搭建华为FusionCompute实验环境(二)保姆级安装教程,可运行虚拟机
- 计算机校准颜色,直观:如何在Win7计算机中校准显示器|计算机显示器颜色校准...
- 头歌-信息安全技术-【实训10】HTML信息隐藏、动态分析技术
- 有了AI,程序猿再也不用担心有Bug了