赞
踩
import java.util.Scanner; public class ArrayStackDemo1 { public static void main(String[] args) { ArrayStack1 arrayStack1 = new ArrayStack1(5); Scanner scanner = new Scanner(System.in); boolean loop = true; String menu = ""; while (loop){ System.out.println("push"); System.out.println("pop"); System.out.println("exit"); System.out.println("list"); System.out.println("top"); System.out.println("请输入菜单: "); menu = scanner.next(); switch (menu){ case "push": System.out.println("请输入一个数: "); int data = scanner.nextInt(); arrayStack1.push(data); break; case "pop": System.out.println("出栈的数据是:"+arrayStack1.pop()); break; case "list": arrayStack1.list(); System.out.println(); break; case "top": System.out.println(arrayStack1.top()); break; case "exit": scanner.close(); loop = false; break; } } } } class ArrayStack1{ public int maxSize;//栈的最大size public int [] stack ; //用数组模拟栈 public int top = -1;//栈顶 初始化为 -1 public ArrayStack1(int maxSize) { this.maxSize = maxSize; stack = new int[maxSize]; } //栈满 public boolean isFull(){ return top == maxSize - 1; } //栈空 public boolean isEmpty(){ return top == -1; } //入栈 public void push(int data){ //入栈需要判满 if (isFull()){ System.out.println("栈已经满了,不能入栈"); return; } top ++; stack[top] = data; } //出栈需要判空 public int pop(){ if (isEmpty()){ System.out.println("这个栈是空的!!!"); return 0; } int value = stack[top]; top --; return value; } public int top(){ return stack[top]; } //遍历栈 public void list(){ if (isEmpty()){ System.out.println("没有数据!!"); return; } for (int i = top; i >=0 ; i --) { System.out.print(stack[i]+" "); } } }
import java.util.Scanner; public class LinlistStackDemo2 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); SingleLinkListStack1 stack1 = new SingleLinkListStack1(); boolean loop = true; String menu = ""; while (loop){ System.out.println("push"); System.out.println("pop"); System.out.println("show"); System.out.println("top"); System.out.println("exit"); System.out.println("请输入菜单: "); menu = scanner.next(); switch (menu){ case "push": System.out.println("请输入一个数: "); int data = scanner.nextInt(); stack1.push(new Node2(data)); break; case "pop": System.out.println(stack1.pop()); break; case "show": stack1.show(); break; case "top": System.out.println(stack1.top()); break; case "exit": loop = false; break; default: System.out.println("输入格式不正确 !!!"); break; } } } } //带头节点的链表模拟栈 class SingleLinkListStack1{ SingleLinkList1 singleLinkList1 = new SingleLinkList1(); public void push(Node2 node2){ singleLinkList1.add(node2); } public Node2 pop(){ return singleLinkList1.get(); } public Node2 top (){ return singleLinkList1.getTop(); } public void show(){ singleLinkList1.show(); } } //单链表 class SingleLinkList1{ Node2 head2 = new Node2(-1); //用头插法向链表中插入数据 public void add(Node2 node2){ Node2 temp = this.head2.getNext(); this.head2.setNext(node2); node2.setNext(temp); } public Node2 get(){ //判空 if (this.head2.getNext() == null){ System.out.println("链表为空!!!!"); return null; } this.head2 = this.head2.getNext(); return head2; } public void show(){ //判空 if (this.head2.getNext() == null){ System.out.println("链表为空!!!!"); return ; } Node2 temp = this.head2.getNext(); while (temp != null){ System.out.println(temp.getData()); temp = temp.getNext(); } } public Node2 getTop(){ return this.head2.getNext();//返回第一个节点 } } class Node2{ private int data; private Node2 next; public Node2(int data) { this.data = data; } public void setData(int data) { this.data = data; } public void setNext(Node2 next) { this.next = next; } public int getData() { return data; } public Node2 getNext() { return next; } @Override public String toString() { return "Node2{" + "data=" + data + '}'; } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。