日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

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

發布時間:2024/10/8 java 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 栈和队列的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简单实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。