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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。