面试宝典上的Java实现栈操作
来源:互联网 发布:js获取点击事件 编辑:程序博客网 时间:2024/04/30 21:10
看到面试宝典上面的一道题: 实现一个栈操作,将1-12月的英文单词压入栈中,然后再将其取出,使用java代码实现。比照着它的答案,程序运行不正确,就自己慢慢的做出来了。主要使用了两种方法:顺序栈和链栈,直接上程序吧。
参考资料:http://blog.csdn.net/wuwenxiang91322/article/details/12231657
顺序栈实现:
package com.stack;import java.util.*;public class Stack{private int maxSize;private int top;private String [] stackArrary;static String [] months = {"January", "February", "March", "April","May", "June", "July", "August","September","October","November","December"};/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubStack stk = new Stack(15);for(int i = 0;i<months.length;i++)stk.push(months[i]+" ");while(!stk.isEmpty()){System.out.println(stk.pop());System.out.println(" ");}}public Stack(int s){maxSize = s;stackArrary = new String[maxSize];top = -1;}public void push(String s) {// TODO Auto-generated method stubstackArrary[++top] = s;}public String pop(){return stackArrary[top--];}public boolean isEmpty() {return (top == -1);}}
运行结果:
December
November
October
September
August
July
June
May
April
March
February
January
2.链栈来实现
package com.stack;/* * 链栈的实现 */public class LinkStack<T> {static String [] months = {"January", "February", "March", "April","May", "June", "July", "August","September","October","November","December"};public static void main(String[] args) {// TODO Auto-generated method stubint i = 0;LinkStack<String> stack = new LinkStack<String> ();//入栈for(int j=0;j<months.length;j++){stack.push(months[j]+"");}//访问栈顶元素System.out.println("访问栈顶元素:"+ stack.peek());while(!stack.empty()){i++;System.out.println("第"+i+"次弹出栈顶元素:"+stack.pop());}}// 定义节点数据结构private class Node{public T data;public Node next;public Node(T data, Node next){this.next = next;this.data = data;}}// 栈顶元素private Node top;// 元素的个数private int size;// 插入数据public void push(T element){top = new Node(element,top);size++;}// 出栈public T pop(){Node oldNode = top;top = top.next;// 释放引用oldNode.next = null;size--;return oldNode.data;}// 返回栈顶的元素,但不出栈public T peek(){return top.data;}// 链栈的长度public int length(){return size;}// 判断链栈是否是空栈public boolean empty(){return size ==0;}}运行结果:
访问栈顶元素:December
第1次弹出栈顶元素:December
第2次弹出栈顶元素:November
第3次弹出栈顶元素:October
第4次弹出栈顶元素:September
第5次弹出栈顶元素:August
第6次弹出栈顶元素:July
第7次弹出栈顶元素:June
第8次弹出栈顶元素:May
第9次弹出栈顶元素:April
第10次弹出栈顶元素:March
第11次弹出栈顶元素:February
第12次弹出栈顶元素:January
0 0
- 面试宝典上的Java实现栈操作
- java面试宝典大全(上)
- Java面试宝典之二叉树的实现
- 单链表的操作(程序员面试宝典)
- 超实用的Java面试宝典
- 面试宝典---java程序设计的基本概念
- java 面试笔试宝典
- Java程序员面试宝典
- Java程序员面试宝典
- java面试宝典
- Java 面试 宝典 (1)
- Java 面试 宝典 (2)
- java面试宝典
- java程序员面试宝典
- JAVA程序员面试宝典
- JAVA面试宝典
- Java程序员面试宝典
- java面试宝典
- 是橡皮子弹致死或不
- android在非Activity下,intent页面跳转问题
- Nginx1.1实现Resin4集群
- grnmarker笔记
- C# String
- 面试宝典上的Java实现栈操作
- 方差-研究随机变量与其均值的偏离程度
- matlab 统计总结
- JavaScript中鼠标event的位置(clientX,layerX,x,offsetX等)
- OJ网站leetcode
- Linux kernel panic问题解决方法
- js格式化金额
- Linux MySQL 更改字符集(程序中插入中文乱码 )
- oracle 递归查询 CONNECT BY、START WITH、CONNECT_BY_ROOT、CONNECT_BY_ISLEAF、SYS_CONNECT_BY_PATH