首页 > 代码库 > Java中栈结构的自我实现
Java中栈结构的自我实现
package com.pinjia.shop.common.collection; /** * Created by wangwei on 2017/1/3. */ public class MyLinkedStack<T> { //定义节点数据结构 private class Node{ public T data; public Node next; public Node(){} public Node(T data,Node next){ this.data = http://www.mamicode.com/data;"[]"; else{ StringBuilder sb = new StringBuilder("["); for(Node current = top;current != null;current = current.next){ sb.append(current.data.toString()+", "); } int len = sb.length(); return sb.delete(len-2,len).append("]").toString(); } } public static void main(String[] args) { MyLinkedStack<String> stack = new MyLinkedStack<String>(); // 不断地入栈 stack.push("aaaa"); stack.push("bbbb"); stack.push("cccc"); stack.push("dddd"); System.out.println(stack); // 访问栈顶元素 System.out.println("访问栈顶元素:" + stack.peek()); // 弹出一个元素 System.out.println("第一次弹出栈顶元素:" + stack.pop()); // 再次弹出一个元素 System.out.println("第二次弹出栈顶元素:" + stack.pop()); System.out.println("两次pop之后的栈:" + stack); } }
以下是基于数组的实现:
package com.pinjia.shop.common.collection; /** * Created by wangwei on 2017/1/3. */ public class MyArrayStack<T> { private Object[] objs = new Object[16]; private int size = 0; public boolean isEmpty() { return size == 0; } public void clear() { // 将数组中的数据置为null, 方便GC进行回收 for (int i = 0; i < size; i++) { objs[size] = null; } size = 0; } public int length() { return size; } public boolean push(T data) { // 判断是否需要进行数组扩容 if (size >= objs.length) { resize(); } objs[size++] = data; return true; } /** * 数组扩容 */ private void resize() { Object[] temp = new Object[objs.length * 3 / 2 + 1]; for (int i = 0; i < size; i++) { temp[i] = objs[i]; objs[i] = null; } objs = temp; } public T pop() { if (size == 0) { return null; } return (T) objs[--size]; } public String toString() { StringBuilder sb = new StringBuilder(); sb.append("MyArrayStack: ["); for (int i = 0; i < size; i++) { sb.append(objs[i].toString()); if (i != size - 1) { sb.append(", "); } } sb.append("]"); return sb.toString(); } public static void main(String[] args) { MyArrayStack<Integer> stack = new MyArrayStack<Integer>(); stack.push(12); stack.push(13); System.out.println(stack.length()); System.out.println(stack); } }
Java中栈结构的自我实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。