博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构 第3讲 栈
阅读量:6656 次
发布时间:2019-06-25

本文共 2232 字,大约阅读时间需要 7 分钟。

栈又称堆栈,它是运算受限的线性表,其限制是仅允许在表的一段进行插入和删除操作,不允许在其他任何位置进行插入、删除等操作,表中进行插入、删除操作的一端称为栈顶,栈顶保存的元素称为栈顶元素,表的另一端称为栈底。

方法一:数组实现的栈,能存储任意类型的数据

import java.lang.reflect.Array;//数组实现的栈,能存储任意类型的数据public class Stacktest
{ private static final int SIZE = 12; private T[] Arrays; private int count; public Stacktest(Class
type){ this(type,SIZE); } // 不能直接使用Arrays = new T[SIZE]; public Stacktest(Class
type,int size){ Arrays =(T[]) Array.newInstance(type,size); count =0; } // 将t添加到栈中 public void push(T t){ Arrays[count++] = t; } // 返回"栈顶元素值" public T peek(){ return Arrays[count-1]; }// 返回"栈顶元素值",并删除"栈顶元素" public T pop(){ T ret = Arrays[count-1]; count--; return ret; }// 返回"栈"的大小 public int size(){ return count; } // 返回"栈"是否为空 public boolean isEmpty() { return size()==0; } // 打印"栈" public void PrintArrayStack() { if (isEmpty()) { System.out.printf("stack is Empty\n"); } System.out.printf("size()=%d\n", size()); int i=size()-1; while (i>=0) { System.out.println(Arrays[i]); i--; } } public static void main(String[] args) { String string; // 将10, 20, 30 依次推入栈中 Stacktest
stack = new Stacktest
(String.class); stack.push("10"); stack.push("20"); stack.push("30"); // 将"栈顶元素"赋值给stack,并删除"栈顶元素" string = stack.pop(); System.out.println("stack="+string); // 只将"栈顶"赋值给stack,不删除该元素. string = stack.peek(); System.out.println("stack="+string); stack.push("30"); stack.PrintArrayStack(); // 打印栈 }}复制代码

方法二:Java的 Collection集合 中自带的"栈"(stack)的示例

import java.util.Stack;public class Test {    public static void main(String[] args) {   int num=0;// 将10, 20, 30 依次推入栈中   Stack
test = new Stack
(); test.push(10); test.push(20); test.push(30);// 将"栈顶元素"赋值给num,并删除"栈顶元素" num = test.pop();// 只将"栈顶"赋值给num,不删除该元素. num = (int)test.peek(); test.push(30); while (!test.empty()) { num = (int)test.pop(); System.out.printf("num=%d\n",num); } }}复制代码

转载于:https://juejin.im/post/5c8a02b95188257e252a4048

你可能感兴趣的文章
实用的移动端web布局技巧
查看>>
kafka学习笔记-生产者(二)
查看>>
设计模式之观察者模式
查看>>
docker
查看>>
-bash: nslookup:command not found
查看>>
[leetcode] 217. Contains Duplicate
查看>>
lc414. Third Maximum Number
查看>>
C# 实现酒店房态图
查看>>
CentOS 7 安装Nginx 并配置自动启动
查看>>
APP支付-》支付宝RSA2->支付与验签
查看>>
python模块(shelve,xml,configparser,hashlib,logging)
查看>>
java 通过System.getProperties()获取系统参数
查看>>
Java Web开发Session超时设置
查看>>
201771010101 白玛次仁 《2018面向对象程序设计(Java)》第十三周学习总结
查看>>
java实验报告(实验三)
查看>>
chrome checkbox 偶尔不显示问题
查看>>
spring中 asm 和 jdk版本不兼容的问题
查看>>
homework-05
查看>>
dede数据库文件导入失败的可能原因是数据表前缀不同,这里的失败指的是mysql添加了数据,但后台不显示...
查看>>
bzoj3140: [Hnoi2013]消毒(二分图)
查看>>