package com.atguigu.stack;
import java.util.Scanner;
public class LinkedListStackDemo {
public static void main(String[] args) {
LinkedListStack stack = new LinkedListStack();
boolean loop = true;
Scanner scanner = new Scanner(System.in);
while (loop) {
System.out.println("请输入操作:");
String key = scanner.next();
switch (key) {
case "size":
System.out.println("栈的大小为" + stack.size());
break;
case "show":
stack.list();
break;
case "push":
System.out.println("请输入编号:");
int value = scanner.nextInt();
Node node = new Node(value);
stack.push(node);
break;
case "pop":
try {
stack.pop();
} catch (Exception e) {
System.out.println(e.getMessage());
}
break;
case "exit":
loop = false;
break;
}
}
}
}
class LinkedListStack {
private Node head = new Node(0);
private int maxSize = 3;
public Node getHead() {
return head;
}
public int size() {
int sum = 0;
if (head.getNext() == null) {
return 0;
} else {
Node temp = head.getNext();
while (true) {
if (temp == null) {
break;
}
sum++;
temp = temp.getNext();
}
}
return sum;
}
public void push(Node node) {
if (size() >= maxSize) {
System.out.println("栈满,无法加入");
return;
}
if (head.getNext() == null) {
head.setNext(node);
} else {
Node cur = head.getNext();
node.setNext(cur);
head.setNext(node);
System.out.println("添加成功");
}
}
public void pop() {
if (head.getNext() == null) {
throw new RuntimeException("栈空");
}
Node temp = head.getNext();
System.out.println("删除的元素为" + temp.getNo());
head.setNext(temp.getNext());
System.out.println("删除成功");
}
public void list() {
if (head.getNext() == null) {
System.out.println("没有数据");
return;
}
Node temp = head.getNext();
while (true) {
if (temp == null) {
break;
}
System.out.println("编号为" + temp.getNo());
temp = temp.getNext();
}
}
}
class Node {
private int no;
private Node next;
public Node(int no) {
this.no = no;
}
public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
@Override
public String toString() {
return "Node{" +
"no=" + no +
'}';
}
}
用单链表实现栈
最新推荐文章于 2024-07-31 19:36:23 发布