本文主要是介绍链栈的java实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
链栈
栈的链式存储结构称为链栈。
在算法中要用到多个栈时,最好用链表作为栈的存储结构,即用指针来实现栈。用这种方式实现的栈也称为链栈。由于栈的插人和删除操作只在表头进行,因此用指针实现栈时没有必要像单链表那样设置一个表头单元。
一、链栈结构及数据类型
栈的链式存贮结构,也称为链栈,它是一种限制运算的链表,即规定链表中的插入和删除运算只能在链表开头进行。链栈结构见图。
链栈的java实现:
- package study_02.test;
-
-
-
-
-
-
-
- public class LinkStack<T> {
-
- private class Node{
- public T data;
- public Node next;
-
- public Node(){}
-
- public Node(T data,Node next){
- this.next=next;
- this.data=data;
- }
- }
-
- private Node top;
-
- private int size;
-
- public void push(T element){
- top=new Node(element, top);
- size++;
- }
-
-
- public T pop(){
- Node oldNode=top;
- top=top.next;
-
- oldNode.next=null;
- size--;
- return oldNode.data;
- }
-
- public T peek(){
- return top.data;
-
- }
-
- public int length(){
- return size;
- }
-
- public boolean empty() {
- return size == 0;
- }
-
- public String toString() {
-
- if(empty())
- return "[]";
- 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) {
- LinkStack<String> stack = new LinkStack<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);
- }
- }
输出结果:
[dddd, cccc, bbbb, aaaa]
访问栈顶元素:dddd
第一次弹出栈顶元素:dddd
第二次弹出栈顶元素:cccc
两次pop之后的栈:[bbbb, aaaa]
转自http://blog.csdn.net/wuwenxiang91322/article/details/12139857
这篇关于链栈的java实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!