用数组和链表两种方式实现栈
来源:互联网 发布:java招聘网站源码 编辑:程序博客网 时间:2024/06/05 19:50
1.数组方式
import java.util.Arrays;class MyStack<E>{private Object[] stack;int size;//数组中存储元素的个数public MyStack() {stack=new Object[10];//初始长度为10}//判断堆中元素是否为空public boolean isEmpty(){return size==0;}//取出栈顶元素public E peek(){if(isEmpty()){return null;}return (E)stack[size-1];}//出栈操作public E pop(){E e=peek();stack[size-1]=null;size--;return e;}//入栈操作public E push(E item){ensureCapacity(size+1);//检查容量stack[size++]=item;return item;}//判断数组容器是否已满,若已满则扩充数组空间private void ensureCapacity(int size){int len=stack.length;if(size>len){//数组已满int newLen=10;//每次数组扩充的容量stack=Arrays.copyOf(stack, newLen);}}}public class Main2 {public static void main(String[] args) {MyStack<Integer> s=new MyStack<Integer>();s.push(1);s.push(2);System.out.println("栈中元素个数:"+s.size);System.out.println("栈顶元素为:"+s.pop());}}
2.链表方式
class Node<E>{Node <E>next=null;E data;public Node(E data){this.data=data;}}public class Stack<E> {Node<E> top=null;public boolean isEmpty(){return top==null;}public void push(E data){Node<E> newNode=new Node<E>(data);newNode.next=top;top=newNode;}public E pop(){if(this.isEmpty()){return null;}E data=top.data;top=top.next;return data;}public E peek(){if(this.isEmpty()){return null;}return top.data;}public static void main(String[] args) {Stack<Integer> s=new Stack<Integer>();s.push(1);s.push(2);System.out.println("栈顶元素为:"+s.pop());}}
阅读全文
0 0
- 用数组和链表两种方式实现栈
- 基于数组和链表两种方式实现栈
- java实现栈(数组和链表两种实现方式)
- Java的栈实现(数组、链表两种方式)
- 栈的两种实现方式:数组和链表
- java实现栈(数组方式)
- 栈的实现(数组方式)
- 使用动态数组的方式实现栈
- 数组反序用异或方式实现
- FIFO实现:数组方式
- PHP实现数组按数组方式访问和对象方式操作
- 栈01:实现栈的3中方式: 数组,链表和容器
- 一个自动在栈和堆上分配变长数组的实现方式
- java三种方式实现字符串反转(StringBuilder类,数组和栈)
- 采用数组和节点方式实现的堆栈
- 基于数组和节点方式的队列的实现
- Block语法和Block方式实现数组排序
- 约瑟夫环(数组和链表实现方式)
- 搭建springmvc环境的步骤(基于配置文件)
- Hdu4185 Oil Skimming
- Mysql中大小写敏感问题
- c#匿名方法调用委托
- SpringBoot 处理静态资源
- 用数组和链表两种方式实现栈
- 基于magic_quotes_gpc与magic_quotes_runtime的区别与使用介绍
- PYTHO 爬虫,抓去京东产品价格DEMO
- 20170629总结
- 快速排序非递归java
- spring管理事务控制的问题
- 小图点击弹出大图插件引用
- ROS创建话题
- 2017年前端面试题汇总