一、栈结构
栈是一种,先进后出,后进先出的数据结构,只有一端能够进行操作,是一种操作受限制的线形表

二、栈的实现

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 }
  1. 通过链表实现
    链表节点
    想学习交流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. 保存数组_面试官:讲一讲你对据结构——数组、链表、栈、队列的理解

    一.解释定义 1. 数据结构: 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合.再简单描述一下:数据结构就是描述对象间逻辑关系的学科. 如果还是不太清楚下面会举例说明的. 2. 数据存储结 ...

  2. 数组和链表的增删改查速度比较

    数组查询快,增删慢 链表增删快,查询慢 首先我们要知道什么是数组什么是链表,数组和链表都有什么特点,那么这道题才好解答,数组是有序的元素序列,是多个相同类型数据的组合,而链表是一种物理存储单元上非连续 ...

  3. JAVA day16、17 数据结构(栈、队列、数组、链表、红黑树)

    一.什么叫数据结构? 数据结构是相互之间存在一种或多种特定关系的数据元素的集合,即带"结构"的数据元素的集合."结构"就是指数据元素之间存在的关系,分为逻辑结构 ...

  4. Java笔记整理五(Iterator接口,泛型,常见数据结构(栈,队列,数组,链表,红黑树,集合),jdk新特性,异常,多线程,Lambda表达式)

    Java笔记整理五 1.1Iterator接口 Collection接口与Map接口主要用于存储元素,而Iterator主要用于迭代访问(即遍历)Collection中的元素,因此Iterator对象 ...

  5. 数据结构之数组、链表、栈和队列

    1.数组 1.1:概念 数组是一种线性表数据结构,它用一组连续的内存空间,来存储一组具有相同类型的数据.这里我们要抽取出三个跟数组相关的关键词:线性表,连续内存空间,相同数据类型:数组具有连续的内存空 ...

  6. java 二维链表_Java数据结构与算法----数组与链表

    数据类型 1 数据类型介绍 数据类型的分类(按照结构划分):线性结构和非线性结构 线性结构:线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系 线性结构有两种不同的存储结构,即顺序 ...

  7. 牛客网Java刷题知识点之数组、链表、哈希表、 红黑二叉树

    不多说,直接上干货! 首先来说一个非常形象的例子,来说明下数组和链表. 上体育课的时候,老师说:你们站一队,每个人记住自己是第几个,我喊到几,那个人就举手,这就是数组. 老师说,你们每个人记住自己前面 ...

  8. c++使用单向链表存储一组有序数据_《一起学习java和数据结构》系列-数组和链表...

    数组 数组是一个线性表数据结构.它用一段连续的内存地址空间,来存储一些相同类型的数据. 从上面的定义,我们不难看出几个关键词. 线性表:顾名思义,线性表就是数据排列成一条线的数据结构.每一个线性表只有 ...

  9. echart data放入数组_线性表(数组、链表、队列、栈)详细总结

    线性表是一种十分基础且重要的数据结构,它主要包括以下内容: 数组 链表 队列 栈 接下来,我将对这四种数据结构做一个详细的总结,其中对链表实现了十几种常见的操作.希望对你有所帮助. 1.数组 数组(A ...

最新文章

  1. 全栈工程师的学习笔记与工作记录
  2. SQL 性能优化梳理 —— 基本概念、创建时优化、查询时优化
  3. box2d 遍历世界中 body 的方法
  4. 从键盘输入一个字符,判断其是不是大写字母,如果是则请输出这个大写字母,如果不是请输出“这不是一个大写字母”的英文信息(要求:能连续输出直到输出“#”结束)。
  5. python爬取哔哩哔哩视频_Python实现视频爬取下载
  6. 程序员会写诗是怎样的体验
  7. jQuery学习之二---jq核心
  8. 按创建日期删除指定日期之前的文件夹及文件夹下的所有子目录
  9. Java的Socket编程C/S小例子
  10. java读取linux配置文件_Java读取配置文件的几种方法
  11. 免费logo设计在线生成(不定时更新)
  12. R先生一步步教你用EasyExcel导出包含多图片的Excel
  13. 【一起入门NLP】中科院自然语言处理作业五:BiLSTM+Attention实现SemEval-2010 Task 8上的关系抽取(Pytorch)【代码+报告】
  14. P3975 [TJOI2015]弦论 - 后缀自动机(SAM)
  15. 记工商银行软件开发中心北京研发部面试——人工智能研发岗
  16. ups计算软件_什么是UPS?为什么要用UPS?
  17. jdk配置教程详(sha)细(gua)版
  18. 5SHX0660F0001 IGCT ABB 5SHX0660F0001 3BHL00386P0101
  19. 智遥工作流开发ECR(工程变更申请单)流程
  20. 重新启动计算机前控制台无法刷新,重新安装.NET framework 3.5以准备Websense安装

热门文章

  1. UML-认识六种箭头,轻松读懂UML图
  2. 后端技术精选 - 收藏集 - 掘金
  3. taobao.item.update.listing( 一口价商品上架 )
  4. Egg http proxy
  5. aliexpress商品详情API接口(速卖通商品详情页面数据接口)
  6. 会议室预约系统 会议预约 会议预约触摸屏 会议预约管理系统
  7. VMware workstation搭建华为FusionCompute实验环境(二)保姆级安装教程,可运行虚拟机
  8. 计算机校准颜色,直观:如何在Win7计算机中校准显示器|计算机显示器颜色校准...
  9. 头歌-信息安全技术-【实训10】HTML信息隐藏、动态分析技术
  10. 有了AI,程序猿再也不用担心有Bug了