java 數(shù)據(jù)結(jié)構(gòu)中棧和隊列的實例詳解
java 數(shù)據(jù)結(jié)構(gòu)中棧和隊列的實例詳解
棧和隊列是兩種重要的線性數(shù)據(jù)結(jié)構(gòu),都是在一個特定的范圍的存儲單元中的存儲數(shù)據(jù)。與線性表相比,它們的插入和刪除操作收到更多的約束和限定,又被稱為限定性的線性表結(jié)構(gòu)。棧是先進后出FILO,隊列是先進先出FIFO,但是有的數(shù)據(jù)結(jié)構(gòu)按照一定的條件排隊數(shù)據(jù)的隊列,這時候的隊列屬于特殊隊列,不一定按照上面的原則。
實現(xiàn)棧:采用數(shù)組和鏈表兩種方法來實現(xiàn)棧
鏈表方法:
package com.cl.content01;
/*
* 使用鏈表來實現(xiàn)棧
*/
public class Stack<E> {
Node<E> top=null;
public boolean isEmpty(){
return top==null;
}
/*
* 出棧
*/
public void push(E data){
Node<E> nextNode=new Node<E>(data);
nextNode.next=top;
top=nextNode;
}
/*
* 出棧
*/
public E pop(){
if(this.isEmpty()){
return null;
}
E data =top.datas;
top=top.next;
return data;
}
}
/*
* 鏈表
*/
class Node<E>{
Node<E> next=null;
E datas;
public Node(E datas){
this.datas=datas;
}
}
實現(xiàn)隊列:同棧一樣
鏈表方法:
package com.cl.content01;
public class MyQueue<E> {
private Node<E> head=null;
private Node<E> tail=null;
public boolean isEmpty(){
return head==null;
}
public void put(E data){
Node<E> newNode=new Node<E>(data);
if(head==null&&tail==null)
head=tail=newNode;
else
tail.next=newNode;
tail=newNode;
}
public E pop(){
if(this.isEmpty())
return null;
E data=head.data;
head=head.next;
return data;
}
public int size(){
int n=0;
Node<E> t=head;
while(t!=null){
n++;
t=t.next;
}
return n;
}
public static void main(String[] args) {
MyQueue<Integer> q=new MyQueue<Integer>();
q.put(1);q.put(3);q.put(2);
System.out.println(q.pop());
System.out.println(q.size());
System.out.println(q.pop());
}
}
class Node<E>{
Node<E> next=null;
E data;
public Node(E data){
this.data=data;
}
}
如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望通過本能幫助到大家,謝謝大家對本站的支持!
- java 數(shù)據(jù)結(jié)構(gòu)之棧與隊列
- Java深入了解數(shù)據(jù)結(jié)構(gòu)之棧與隊列的詳解
- Java 棧和隊列的相互轉(zhuǎn)換詳解
- Java棧和基礎(chǔ)隊列的實現(xiàn)詳解
- 一起來學(xué)習(xí)Java的棧和隊列
- Java?棧與隊列實戰(zhàn)真題訓(xùn)練
- Java 棧與隊列超詳細分析講解
- Java使用跳轉(zhuǎn)結(jié)構(gòu)實現(xiàn)隊列和棧流程詳解
- Java線性結(jié)構(gòu)中棧、隊列和串的基本概念和特點詳解
- Java常見的數(shù)據(jù)結(jié)構(gòu)之棧和隊列詳解
- Java 棧和隊列的交互實現(xiàn)
相關(guān)文章
SpringCloud實現(xiàn)灰度發(fā)布的方法步驟
本文主要介紹了SpringCloud實現(xiàn)灰度發(fā)布的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05
RocketMQ消息隊列實現(xiàn)隨機消息發(fā)送當做七夕禮物
這篇文章主要為大家介紹了RocketMQ消息隊列實現(xiàn)隨機消息發(fā)送當做七夕禮物,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-08-08
springboot HandlerIntercepter攔截器修改request body數(shù)據(jù)的操作
這篇文章主要介紹了springboot HandlerIntercepter攔截器修改request body數(shù)據(jù)的操作,具有很好的參考價值,希望對大家有所幫助。2021-06-06
Spring源碼之事件監(jiān)聽機制詳解(@EventListener實現(xiàn)方式)
這篇文章主要介紹了Spring源碼之事件監(jiān)聽機制(@EventListener實現(xiàn)方式),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-08-08
Java加載properties文件實現(xiàn)方式詳解
這篇文章主要介紹了Java加載properties文件實現(xiàn)方式詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-07-07

