用节点实现一个栈结构(stack)

    前一篇文章用了数组对栈进行了简单地实现,本文拟使用linkedList进行实现。在java的connection中,有一个linkedlist子类,俗称为链表,linkedlist,节点Node在java中是这样定义的:

Private static class Node<E>
{
E item;
Node<E> next;
Node<E> perv;
Node(Node<E> prev, E element, Node<E> next)
{
this.item=element;
this.next=next;
this.prev=prev;
}
}

    我们借助Node的构思对栈结构进行实现,栈结构的特点是先进后出,之前用数组对其的5个方法empty()、peek()、pop()、push()、search()。进行了简单的实现,我们使用Node思维进行实现,详细结果如下:

class	linkedStack{
	  private int size;          //个数
	  private Node first;    //定义头结点
	  public void push(String str) {
//产生一个新的节点
		 Node node=new Node(str, null);	
//判断栈是否为空	
if (size==0) {
			this.first=node;
		}else {
		node.next=this.first; //将头结点作为新结点的下一个
			this.first=node;//将新结点作为头结点
		}
		size++;
	}
	  public String peek() {
		  return this.first.item;//因为在入栈的时候是倒序放的,故顺序弹栈即可
	}
	  
	  public String pop() {
		String str=peek();//获取栈顶位置
		  this.first=this.first.next;//头结点的下一位作为头结点
		  size--;
		  return str;
	}
	  
	  public boolean empty(String str) {
		return size==0;
	}
	  public int search(String str) {
		Node node=this.first;//初始化,将头结点作为初始位置
		  for (int i = 0; i < size; i++) {
			  if (str==node.item||str!=null&str.equals(node.item)) {
				return i+1;
			}
		}
		  return -1;
	}
  }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值