using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Policy;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp12
{
internal class Program
{
static void Main(string[] args)
{
}
}
public class Node
{
public int Data;
public Node next;
public Node(int data)
{
this.Data = data;
this.next = null;
}
}
public class StackArray
{
Node Head;//链表头指针
Node Front;//链表尾指针
public bool IsEmpty()//判断是否为空
{
if (Front == null) return true;
else return false;
}
public void Push(int data)//压入栈
{
Node newNode = new Node(data);//先创建一个链表来存储要压入的数据
if (IsEmpty())//为空
{
//两个指针都指向newNode
Head = newNode;
Front = newNode;
}
else//不为空
{
//Head所指向的数据的下一个索引是newNode
Head.next = newNode;
//Head指向newNode
Head = newNode;
}
}
public void Pop()//出栈
{
Node newNode = Front;
if (IsEmpty())
{
throw new Exception("堆栈是空的!");
}
else if (newNode == Head)
{
int data = newNode.Data;
//将两个指针置空
Head = null;
Front = null;
Console.WriteLine(data);
}
else
{
//指向Head所指向的数据的上一个索引
while (newNode.next != Head)
{
newNode = newNode.next;
}
int Data = Head.Data;
Head = newNode;
Console.WriteLine(Data);
}
}
}
}
个人见解,有错之处请指出!