数据结构——栈

Stack是一种数据结构.

stack可以通过数组实现,也可以通过链表实现;
遵循先进后出原则;
链表实现stack的优点:
1>操作所需时间与集合大小无关;
2>所需空间与集合大小成正比;
3>可处理任意类型数据

Java实现(头结点):

class Node
{
	private database data;
	private Node next;
}
class Stack
{
	private Node HeadNode;//头结点;
	private int size;//当前元素个数;
	
	//栈含量
	public int size()
	{
		return this.size;
	}
	//判断栈是否为空
	public boolean IsEmpty()
	{
		return HeadNode.next==null;
	}

	//元素入栈
	public void push(int ele)//带头结点,头插法;
	{
		Node Head=HeadNode;
		Node p=new Node();
		p.data=ele;
		p.next=Head.next;
		Head.next=p;
		size++;
	}

	//元素出栈
	public int pop()
	{
		if(this.IsEmpty())
		{
			return -1;
		}
		else
		{
			//不能解引用两次,需创立中间对象;
			Node Ini=new Node();
			Ini=HeadNode.next;
			int p=Ini.data;
			HeadNode.next=Ini.next;
			size--;
		}
	}
	
}

直接插入,无头结点

class Stack
{
	private Node TopNode;
	private int size;

	//堆栈是否为空
	public boolean IsEmpty()
	{
		return TopNode==null;
	}
	public void push(int ele)
	{
		//update the top value,but TopNode is the top element;
		Node old=TopNode;
		TopNode=new Node();
		TopNode.data=ele;
		TopNode.next=old;
		size++
	}

	//元素出栈
	public int pop()
	{
		if(this.IsEmpty())
		{
			return -1;
		}
		else
		{
			//不使用头结点,在出栈时可不动态申请节点,节省空间;
			int p=TopNode.data;
			TopNode=TopNode.next;
			size--;
			return p;
		}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值