栈和队列的Java实现_栈和队列的java简单实现

栈:这是一个先进后出的数据结构,生活中类似的浏览器的返回上一页就可以利用此结构实现,代码如下:

public class Stack{private Object[] data;//存储数据

private int top;//表示栈顶元素

publicStack(){

data= new Object[100];//为了说明原理随意指定

top =-1;

}public synchronized void put(T t){ //压栈

data[data.length] =t;

top++;

}public synchronized T pop(){ //出栈

if(top<0){return null;

}

T t=(T) data[top];

top--;returnt;

}

}

这只是我自己的Java实现只说明原理,但实际在java中是利用vector来存储数据的,我们知道vector其实是一个线程安全的ArrayList,而ArrayList的底层也是一个数组,所以原理上大同小异

队列:队列其实就是我们生活中的排队现象,先进入的先出,后进入的后出,代码实现如下:

public class Queue{private Object[] data; //存储数据

private int head; //头

private int tail; //尾

publicQueue(){

data= new Object[100];//为了说明原理随意指定

head =1;

tail=1;

}public voidput(T t){

data[tail]=t;

tail++;

}publicT get(){

T t=(T) data[head];

head++;returnt;

}

}

如上所示,也只是说明原理,其实在java jdk中也有许多不同的对列,并且对列可以由数组实现,也可以由链表实现,下面介绍链表

链表是一个类似于现实中串项链的数据结构,前一个数据指向后一个数据,当然也可以后一个数据指向前一个数据,这就是双向链表,这里不做讨论

public class MyNode{private NodeheadNode ;publicMyNode(T t){

headNode= new Node<>(t,null);

}publicMyNode(){

}private static class Node{

Object e;

Nodenext;

Node(E element, Nodenext) {this.e =element;this.next =next;

}

}public voidput(T t){if(headNode==null){

headNode= new Node<>(t,null);

}else{

headNode= new Node<>(t,headNode);

}

}public T get(intindex){

Node node=headNode;for(int i=2;i

node=node.next;

}

T t=(T) node.e;returnt;

}

}

以上就是用Java实现的简单链表,还有双向链表是一个元素指向前一个元素和后一个元素,原理大概相同,这里可以看书链表中取固定位置的数据是非常麻烦的,必须从第一个开始依次查找,这也就是linklist不用for(int i=0;i++;i

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值