package com.stack;
//链表结构的栈:元素的入栈、出栈都在首节点
//节点类型
class Node
{
Node next; //指向下一节点
int data; //数据域
public Node(int data)
{
this.data = data;
}
}
//链表结构的栈-元素的入栈、出栈都在首节点
class LinkedStack
{
Node head; //首节点
//1.元素入栈,元素插在首节点前
public void push(int val)
{
Node newNode = new Node(val);
newNode.next = null;
if(head == null) //首节点为空时
{
head = newNode;
}
else //首节点不为空时
{
newNode.next = head;
head = newNode;
}
}
//2.元素出栈,删除首节点
public void pop()
{
int val;
if(isEmpty()) //栈为空时
{
System.out.println("栈已空");
return;
}
else //栈不空
{
val = head.data;
System.out.print(val +" ");
head = head.next;
}
}
//3.判断栈是否为空
boolean isEmpty()
{
if(head == null)
return true;
else
return false;
}
}
public class TestLinkedStack
{
public static void main(String[] args)
{
LinkedStack s = new LinkedStack();
System.out.print("元素入栈:");
for(int i = 0; i < 5; i++)
{
s.push(i); //入栈
System.out.print(i +" ");
}
System.out.println();
System.out.print("元素出栈:");
for(int i = 0; i < 5; i++)
{
s.pop(); //出栈
}
System.out.println();
}
}