赞
踩
学会了数组栈后,链表栈就非常简单了,但这里还是做一些简单的介绍。
栈具有先入后出的特点,不仅可以用数组实现,也可以用链表实现,用链表的优点是栈的大小没有限制,可以不断的增长下去,数组想实现自动增长就需要多做一些工作。
用链表实现一个栈非常简单,只需要在链表的基础上,使得添加元素和删除元素在链表尾部操作即可。
在控制台模拟栈的入栈,出栈,显示栈,获取栈首元素等操作。
代码如下:
package com.yc.stack; import java.util.Scanner; public class LinkListStackDemo { public static void main(String[] args) { LinkListStack stack = new LinkListStack(); String key = ""; boolean loop = true; Scanner sc = new Scanner(System.in); while(loop){ System.out.println("show:表示显示栈"); System.out.println("peek:查看栈首元素"); System.out.println("push:入栈"); System.out.println("pop:出栈"); System.out.println("exit:退出程序"); System.out.println("请输入你的选择:"); key = sc.next(); switch (key) { case "show": stack.list(); break; case "peek": System.out.println(stack.peek()); break; case "push": System.out.println("请输入一个数"); int val = sc.nextInt(); stack.push(val); break; case "pop": System.out.printf("出栈元素为%d\n",stack.pop()); break; case "exit": sc.close(); loop = false; break; default: break; } } System.out.println("退出程序"); } } class Node{ int data; Node next; } class LinkListStack{ int size; Node head = new Node(); /** * 入栈元素 * @param val */ public void push(int val){ Node temp = head; Node hero = new Node(); hero.data = val; while(temp.next!=null){ temp = temp.next; } temp.next = hero; size++; return; } /** * 判断栈是否为空 * @return */ public boolean isEmpty(){ if(head.next==null){ return true; } return false; } /** * 查看栈首元素 * @return */ public int peek() { if(isEmpty()){ throw new RuntimeException("栈为空,不能输出"); } Node temp = head; while(temp.next!=null){ temp = temp.next; } return temp.data; } /** * 显示栈 */ public void list(){ Node temp = head.next; while(temp!=null){ System.out.println(temp.data); temp = temp.next; } return; } /** * 出栈元素 * @return */ public int pop(){ if(head.next == null){ throw new RuntimeException("栈为空,不能出栈"); } Node temp = head; while(temp.next.next!=null){ temp = temp.next; } int result = temp.next.data; temp.next = null; size--; return result; } }
代码十分简单,有兴趣的朋友可以把我的代码搞复杂点。
这是第二种基础的栈,学会了这些基础的结构后,我相信以后的学习能够更加轻松。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。