Datasture-1 Stack--用Java实现
来源:互联网 发布:微博个性域名二次修改 编辑:程序博客网 时间:2024/05/25 08:15
1. 简单介绍
栈stack:是一种实现了后进先出的数据结构,LIFO(last in first out), 典型的方法是push()和pop()压栈和弹栈。
2. 代码实现
//Stack.javapackage com.fqyuan.stack;import java.lang.reflect.Array;public class Stack<T> { private int size; private int top; private T[] stack; @SuppressWarnings("unchecked") public Stack() { top = -1; size = 50; stack = (T[]) new Object[size]; } public Stack(Class<T[]> clz, int size) { top = -1; this.size = size; stack = clz.cast(Array.newInstance(clz.getComponentType(), size)); } public boolean push(T item) { if (isFull()) { System.out.println("Error, the stack is full!"); return false; } else { stack[++top] = item; return true; } } public T pop() { if (isEmpty()) { System.out.println("Illegal operation, empty stack."); return null; } else { return stack[top--]; } } public boolean isEmpty() { return top == -1; } public boolean isFull() { return top == stack.length - 1; }}//Student.javapackage com.fqyuan.stack;public class Student { private int id; private String name; public Student(int id, String name) { this.id = id; this.name = name; } @Override public String toString() { return "id: " + id + " name: " + name; }}//TestStack.javapackage com.fqyuan.stack;import java.util.Random;public class TestStack { public static void main(String[] args) { // TODO Auto-generated method stub // testInteger(); testPerson(); } private static void testInteger() { Random random = new Random(); Stack<Integer> s = new Stack<Integer>(Integer[].class, 15); for (int i = 0; i < 10; i++) { int val = random.nextInt(100); System.out.print(val + " "); s.push(val); } System.out.println(); while (!s.isEmpty()) { System.out.print(s.pop() + " "); } } private static void testPerson() { Random random = new Random(); Stack<Student> s = new Stack<Student>(Student[].class, 10); for (int i = 0; i < 10; i++) { int val = random.nextInt(100); System.out.print(val + " "); Student stu = new Student(val, ("Student" + val)); s.push(stu); } System.out.println(); while (!s.isEmpty()) { System.out.println(s.pop()); } }}//Running result:9 47 89 70 67 14 32 86 14 80 id: 80 name: Student80id: 14 name: Student14id: 86 name: Student86id: 32 name: Student32id: 14 name: Student14id: 67 name: Student67id: 70 name: Student70id: 89 name: Student89id: 47 name: Student47id: 9 name: Student9
阅读全文
1 0
- Datasture-1 Stack--用Java实现
- 用java.util.*中的LinkedList实现stack
- Java用LinkedList实现的Stack
- 用两个stack实现Queue(java)
- Java array实现stack
- Stack 的 java 实现
- java Stack源代码实现
- java实现stack
- 用Java实现栈(Stack)之数组实现
- 用Java实现栈(Stack)之链表实现
- 【think in java】 实现Stack
- java实现的stack数据结构
- Min Stack (JAVA实现)
- Java 实现栈(Stack)
- 用list实现stack
- 用数组实现Stack
- 用LinkedList实现Stack
- Stack(1)Stack的顺序实现
- 2017-7-19
- 骚骚的STL学习笔记
- Shiro框架编码/解码(五)
- React-Native 中 react-navigation 简单
- 用xampp链接mysql出现的问题
- Datasture-1 Stack--用Java实现
- HPU 一只小蜜蜂
- Python 标准库学习之argparse
- lombok(转载)
- Unknown class AvatarView in Interface Builder file.
- 手机号正则表达式
- Python selenium中一定要会用selenium等待的三种等待方式解读
- MySQL二进制日志
- Linux下安装erlang及rabbitmq