链式栈

采用链式存储结构的栈

push()、pop()、peek()方法的时间复杂度为O(1)

java实现:

package com.ds.stack;public class LinkedStack
{ /** * title : 单链表类 * * @author zhb * * @param
*/ private class Node
{ public T data; // 数据域 保存数据元素 public Node
next; // 地址域 引用后继结点 /** * 构造结点, data指定数据元素, next指定后继结点 * * @param data * @param next */ public Node(T data, Node
next) { this.data = data; this.next = next; } public Node() { this(null, null); } } Node
top = new Node
();// 栈顶结点,单链表结点类 public LinkedStack() { this.top = null; } // 判断是否是空战 public boolean isEmpty() { return this.top == null; } // 元素 x 入栈 public void push(T x) { if(x != null) this.top = new Node
(x,this.top); } // 出栈,返回当前栈顶元素 public T pop() { if(isEmpty()){ return null; } T temp = this.top.data; this.top = this.top.next; return temp; } // 取出栈顶元素,未出栈 public T peek() { return this.top == null ? null:this.top.data; } public static void main(String[] args) { LinkedStack
stack = new LinkedStack
(); stack.push("Java"); stack.push("Php"); stack.push("C++"); stack.push("C#"); System.out.println(stack.pop()); System.out.println(stack.peek()); System.out.println(stack.isEmpty()); } }

运行结果:

C++C++false

如果存在问题,我们随时交流!