栈和队列的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
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的栈和队列的Java实现_栈和队列的java简单实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小黑鱼几点开放抢额度
- 下一篇: 支付宝怎么看完整银行卡号 只能看到后4位