简单写一个bean的实体类
class Data{
private int no;
public Data next;
public Data(int no) {
this.no = no;
}
public int getNo() {
return no;
}
}
创建一个LinkedStack类模拟栈
class LinkedStack{
private Data head = new Data(0); //单链表头节点
private int maxsize;
public LinkedStack(int maxsize) {
this.maxsize = maxsize;
}
//链表的大小
public int size() {
if(head.next == null) {
return 0;
}
Data temp = head;
int size =0;
while(temp.next != null) {
size ++;
temp = temp.next;
}
return size;
}
//判断栈满
public boolean isFull() {
return size() == maxsize;
}
//判断栈空
public boolean isEmpty() {
return head.next == null;
}
//入栈
public void push(Data data) {
if(isFull()) {
System.err.println("栈满,无法入栈~~");
return;
}
Data temp = head;
while(temp.next != null) {
temp = temp.next;
}
temp.next = data;
}
//出栈
public Data pop() {
if(isEmpty()) {
throw new RuntimeException("栈空,无法出栈");
}
Data temp = head;
while(temp.next != null) {
temp = temp.next;
}
return temp;
}
//显示栈
public void showStack() {
if(isEmpty()) {
System.err.println("栈空,没有数据~~");
return;
}
Data [] datas = new Data[size()];
Data temp = head.next;
for(int i=0;i<size();i++) {
datas[i] = temp;
temp = temp.next;
}
int length = size() - 1;
for (int i = length; i >= 0 ; i--) {
System.out.println("stack["+i+"]="+datas[i].getNo());
}
}
}
主类
public class ArrayStackDemo2 {
public static void main(String[] args) {
System.err.println("链表模拟栈的测试~~~");
LinkedStack stack = new LinkedStack(4);
String key = "";
boolean loop = true;
Scanner sc = new Scanner(System.in);
while(loop) {
System.out.println("show:遍历栈");
System.out.println("pop:显示栈顶");
System.out.println("push:添加数据");
System.out.println("exit:退出程序");
key = sc.next();
switch (key) {
case "show":
stack.showStack();
break;
case "push":
System.out.println("请输入一个数");
int num = sc.nextInt();
Data data = new Data(num);
stack.push(data);
break;
case "pop":
try {
Data val = stack.pop();
System.out.println("栈顶的数据为:"+val.getNo());
} catch (Exception e) {
System.err.println(e.getMessage());
}
break;
case "exit":
sc.close();
loop = false;
break;
default:
break;
}
}
System.out.println("程序已退出");
}
}
第一次写博客,代码中如有错误请指出