java 链表数组,链表可以实现栈,队列字典,数组

  java 链表数组,链表可以实现栈,队列字典,数组

  栈的介绍

  栈,是一种先进后出(费罗)的线性数据结构,主要操作为入栈和出栈。

  栈底:最早进入的元素存放的位置。

  栈顶:最后进入元素存放的位置(有些栈中将栈顶表示为栈顶元素的下一位置)。

  免费在线学习视频推荐:java视频

  栈的数组的实现

  示例如下:

  公共类MyStack {

  私有int[]数组;

  private int top=-1;//用顶端来表示栈顶,指向栈顶元素

  公共MyStack(int capacity){

  array=new int[capacity];

  }

  公共无效推送(整数数据)引发异常{

  if(top=array.length-1)

  抛出新的IndexOutOfBoundsException(边界超过范围!);

  其他

  array[top]=data;//先将指针上移,后赋值

  }

  public int pop()抛出异常{

  内部温度;

  如果(前0名)

  抛出新的IndexOutOfBoundsException(栈为空,不能再删除元素!);

  否则{

  temp=array[top];

  array[top-]=0;

  }

  返回温度;

  }

  公共空的输出(){

  for(int I=0;i=topi ){

  系统。出去。println(array[I]);

  }

  }

  公共静态void main(String[] args)引发异常{

  我的堆栈我的堆栈=新的我的堆栈(5);

  我的筹码。推(1);

  我的筹码。推(3);

  我的筹码。推(2);

  我的筹码。pop();

  我的筹码。推(4);

  我的筹码。pop();

  我的筹码。output();

  }

  }栈的链表实现

  栈用链表来实现时,和数组实现不同的是,在出栈时,因为我们只有一个顶端节点来指向栈顶,因此需要从头到尾遍历一遍,来找到栈顶的前一个位置。

  具体的实现如下:

  公共类MyStack_LinkList {

  私有静态类节点{

  (同Internationalorganizations)国际组织数据;

  下一个节点;

  节点(整数数据){

  this.data=数据

  }

  }

  私有节点头;//定义链表的头结点

  私有节点顶端

  私有(同Internationalorganizations)国际组织大小;//定义栈中的元素个数

  private int maxSize

  私有我的栈_链表(int容量){

  maxSize=容量;

  }

  公共无效推送(整数数据)引发异常{

  if(size=maxSize){

  抛出新的IndexOutOfBoundsException(栈已满,不能再入栈!);

  }

  节点推送节点=新节点(数据);

  if(size==0){

  head=pushedNode

  top=推送节点

  pushedNode.next=null

  }

  否则{

  top.next=pushedNode

  pushedNode.next=null

  top=推送节点

  }

  尺寸;

  }

  public int pop()抛出异常{

  int temp=0;

  如果(大小=0)

  抛出新的IndexOutOfBoundsException(栈为空,不能再出栈!);

  else if(size==1){//当栈中元素个数为一时,单独讨论,需将头节点置为空

  temp=top.data

  top=空

  }

  否则{

  temp=top.data

  top=get(大小-1);//此时需遍历一遍链表,用顶端指向需出栈的上一个节点

  top.next=null

  }

  尺寸-;

  返回温度;

  }

  /*

  从头到尾查找元素

  */

  公共节点get(int index){

  节点温度=头;

  for(int I=1;我指数;i ){

  temp=temp.next

  }

  返回温度;

  }

  公共空的输出(){

  节点温度=头;

  for(int I=0;我尺寸;i ){

  系统。出去。打印(温度数据);

  temp=temp.next

  }

  }

  公共静态void main(String[] args)引发异常{

  我的stack _ LinkList我的stack _ LinkList=new我的stack _ LinkList(5);

  我的stack _ linklist。推(1);

  我的stack _ linklist。推(2);

  我的stack _ linklist。pop();

  我的stack _ linklist。推(3);

  我的stack _ linklist。推(5);

  我的stack _ linklist。output();

  }

  }栈的应用场景

  (1)括号匹配判断,用于判断是否()、{}等。匹配;

  (2)在十进制转换时,反向输出转换后的数字;

  (3)递归的逻辑可以用栈来实现;

  (4) Stack还可以用于面包屑导航,让用户在浏览页面时可以很容易的回到上一级或者更高级别的页面。

  如果你想了解更多,请访问:java简介。欢迎大家一起学习!这就是java中栈数组和链表实现的细节。更多请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: