java实现栈(数组和链表两种实现方式)
来源:互联网 发布:网络舆情应急预案 编辑:程序博客网 时间:2024/06/05 22:46
栈的实现
栈是一种先进后出的数据结构,
首先用数组实现,底层使用数组:
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 class MyLinkedStack<T> {/** * 栈顶指针 */private Node top;/** * 栈的长度 */private int size;public MyLinkedStack() {top = null;size = 0;}public boolean isEmpty() {return size == 0;}public void clear() {top = null;size = 0;}public int length() {return size;}public boolean push(T data) {Node node = new Node();node.data = data;node.pre = top;// 改变栈顶指针top = node;size++;return true;}public T pop() {if (top != null) {Node node = top;// 改变栈顶指针top = top.pre;size--;return node.data;}return null;}/** * 将数据封装成结点 */private final class Node {private Node pre;private T data;}}
0 0
- java实现栈(数组和链表两种实现方式)
- Java的栈实现(数组、链表两种方式)
- 基于数组和链表两种方式实现栈
- 用数组和链表两种方式实现栈
- java实现栈(数组方式)
- java三种方式实现字符串反转(StringBuilder类,数组和栈)
- java实现队列(数组方式)
- Java实现栈二:通过数组方式实现
- Java栈实现:数组实现和链表实现
- 栈的实现(数组方式)
- (java)数组实现栈
- Java栈(数组实现)
- 数组实现栈(Java)
- 最大子数组问题(三种方式,java实现)
- 栈的两种实现方式:数组和链表
- 约瑟夫环(数组和链表实现方式)
- 使用数组实现栈和循环队列(JAVA语言)
- java数组实现栈
- LeetCode: Edit Distance
- BZOJ 1010 单调队列优化dp
- android对话框(Dialog)的用法
- 双向冒泡排序
- 如何解决安卓SDK无法下载Package的问题
- java实现栈(数组和链表两种实现方式)
- nyoj 115 城市平乱
- 专家解析:程序员到软件架构师培训与认证之路
- 蛇形数组
- mysql5.1 event概念
- ZOJ Problem Set - 1095 丑数
- 多玩英雄联盟插件盒子v3.8.0
- 云计算
- 分享一个MVC的多层架构,欢迎大家拍砖斧正