我们接着就开始模拟stack数据结构,发觉敲多的头昏,坚持分享 1.基础结构对象Node public class Node { private Object data;// 存放值 private Node next;// 下一个节点 public Node(){} public Node(Object data) {// 构造值为data的结点 this(data,null); } public Node(Object data, Node next) { this.data = data; this.next = next; } public Object getData() { return data; } public void setData(Object data) { this.data = data; } public Node getNext() { return next; } public void setNext(Node next) { this.next = next; } } 2.栈接口 public interface IStack { public void clear(); // 将一个已经存在的栈置成空 public boolean isEmpty(); // 测试栈是否为空 public int length();// 求栈中的数据元素个数并由函数返回其值 public Object peek();// 查看栈顶对象而不移除它,返回栈顶对象 public Object pop();// 移除栈顶对象并作为此函数的值返回该对象 public void push(Object o) throws Exception;// 把项压入栈顶 public void display();// 打印函数,打印所有栈中的元素(栈底到栈顶) } 3.单链表实现栈 public class LinkStack implements IStack{ private Node top;// 栈顶元素的引用 //清空栈 public void clear() { top=null; } //栈数据展示 public void display() { Node p=top; int index=1; while(p!=null) { System.out.println("(节点"+index+")"+p.getData()); p=p.getNext(); index++; } } //栈是否为空 public boolean isEmpty() { return top==null; } //栈长度 public int length() { Node p=top; int length=0; while(p!=null) { p=p.getNext(); length++; } return length; } //取出首元素,但不删除 public Object peek() { if (!isEmpty()) return top.getData();// 返回栈顶元素 else return null; } //取出首元素,并删除 public Object pop() { if (!isEmpty()) { Node p = top;// p指向栈顶结点 top = top.getNext(); return p.getData(); } else return null; } //插入数据 public void push(Object o) throws Exception { //改变栈顶结点 Node p = new Node(o); // 构造一个新的结点 p.setNext(top); top = p; } public Node getTop() { return top; } public void setTop(Node top) { this.top = top; } } 4.顺序结构实现栈 public class SqStack implements IStack{ private Object[] stackElem; // 栈存储空间 private int top; // 非空栈中始终表示栈顶元素的下一个位置,当栈为空时其值为0 public SqStack(int maxSize) { stackElem=new Object[maxSize]; top=0; } //清空栈 public void clear() { top=0; } //展示队列 public void display() { //从站栈顶开始打印 for (int i=top-1;i>=0;i--) { System.out.println(stackElem.toString() + " ");// 打印 } } //栈是否为空 public boolean isEmpty() { return top==0; } //栈的长度 public int length() { return top; } public Object peek() { if(!isEmpty())// 栈非空 return stackElem[top-1]; // 栈顶元素 else // 栈为空 return null; } public Object pop() { if (top == 0)// 栈为空 return null; else {// 栈非空 return stackElem[--top];// 修改栈顶指针,并返回栈顶元素 } } public void push(Object o) throws Exception { if (top == stackElem.length)// 栈满 throw new Exception("栈已满");// 输出异常 else // 栈未满 stackElem[top++] = o;// o赋给栈顶元素后,top增1 } } 小结:希望这样的分享方式对你有用. |
行业聚焦 面试交流 职位推荐 开发视频 技术交流 腾讯微博 新浪微博
友情链接:课课家教育 阿里云 鲜果 W3Cfuns前端网 中国企业家 环球企业家 投资界 传媒梦工场 MSN中文网 Android开发者社区 cnbeta 投资中国网 又拍云存储 美通说传播 IT茶馆 网商在线 商业评论网 TechOrange IT时代周刊 3W创新传媒 开源中国社区 二维工坊 Iconfans 推酷 智能电视网 FreeBuf黑客与极客 财经网 DoNews 凤凰财经 新财富 eoe移动开发者社区 i黑马 网易科技 新浪科技 搜狐IT 创业家 创业邦 腾讯财经 福布斯中文网 天下网商 TechWeb 雷锋网 新浪创业 和讯科技 品途O2O 极客公园 艾瑞网 抽屉新热榜 卖家网 人民网通信频道 拉勾网 创新派 简单云主机
手机版|黑名单|守望者 成才网 在线教育 linux 高级程序设计 C/C++ 大数据
( 蜀ICP备14029946号 )
成都守望者科技有限公司 © 2013-2016 All Rights Reserved