数据结构实现之栈
来源:互联网 发布:淘宝网创立时间 编辑:程序博客网 时间:2024/06/07 06:45
栈的定义
先进后出的数据结构栈API
stack();构造函数
int size();栈容量
boolean isEmpty();栈是否为空
void push(Item item);入栈
Item pop(); 出栈
Item peek(); 获取栈顶元素栈的实现
使用单链表实现,并支持迭代查询
package xwq.dt;import java.util.Iterator;import java.util.NoSuchElementException;import xwq.util.StdIn;import xwq.util.StdOut;/** * Compilation: javac Stack.java * Execution: java Stack < input.txt * Dependencies: StdIn.java StdOut.java * * 使用单链表实现的栈 * * @author xwq * * @param <Item> */public class Stack<Item> implements Iterable<Item>{ private Node<Item > first;//栈顶结点 private int N;//栈大小 private static class Node<Item> { Item item; Node<Item > next; } public Stack() { first = null; N = 0; } public boolean isEmpty() { return first == null; } public int size() { return N; } /** * 入栈 * @param item */ public void push(Item item) { Node<Item > newNode = new Node<Item>(); newNode.item = item; newNode.next = first; first = newNode; N++; } /** * 出栈 * @return */ public Item pop() { if(isEmpty()) throw new NoSuchElementException("栈为空,不能执行pop操作!"); Item item = first.item; first = first.next; N--; return item; } /** * 获取栈顶元素 * @return */ public Item peek() { if(isEmpty()) throw new NoSuchElementException("栈为空,不能执行pop操作!"); return first.item; } @Override public Iterator<Item> iterator() { // TODO Auto-generated method stub return new ListIterator<Item>(first); } private class ListIterator<Item > implements Iterator<Item> { private Node<Item > current; public ListIterator(Node<Item> first) { current = first; } @Override public boolean hasNext() { return current != null; } @Override public Item next() { Item item = current.item; current = current.next; return item; } @Override public void remove() { // TODO Auto-generated method stub throw new UnsupportedOperationException("不支持删除操作"); } } /** * 测试函数 * @param args */ public static void main(String[] args) { Stack<String > stack = new Stack<String>(); while(!StdIn.isEmpty()) { String s = StdIn.readString(); if(!s.equals("-")) stack.push(s); else if(!stack.isEmpty()) StdOut.println(stack.pop()); } StdOut.println("size: " + stack.size()); }}
0 0
- 数据结构之栈实现
- 数据结构实现之栈
- 数据结构之顺序栈实现
- 数据结构之链栈实现
- 数据结构之栈的实现
- 动手实现 数据结构 之 “栈”
- 数据结构之栈 C++实现
- 数据结构之栈的实现
- 数据结构之栈的实现
- JAVA 数据结构之栈实现
- 数据结构栈之javascript实现
- 数据结构之栈(C实现)
- 数据结构之 JavaScript实现栈
- 数据结构之栈实现计算器
- Java数据结构实现之栈
- 数据结构之链栈 C++实现
- 简单数据结构的实现之顺序栈
- 简单数据结构的实现之链栈
- 蓝牙连接MSP430F1232单片机之后,不传输数据
- Spark动态资源分配-Dynamic Resource Allocation
- PHP SESSION - Redis
- 在海思hisiv100nptl平台上交叉编译并安装SRS
- Service基础之调用系统电话管理器
- 数据结构实现之栈
- LeetCode 136:Single Number
- iOS-Core Foundation框架到Foundation桥接的三种方式
- BootStrap入门教程 (四)
- 决策树
- 一步一步在Windows下用MinGW编译x264(x264-snapshot-20160119-2245)
- 数据结构实现之队列
- Codeforce 445E
- Android 回调机制