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)詳解
- 一起來學習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)文章
SpringBoot如何利用Twilio?Verify發(fā)送驗證碼短信
Twilio提供了一個名為?Twilio?Verify?的服務(wù),專門用于處理驗證碼的發(fā)送和驗證,下面我們就來看看如何使用Twilio?Verify實現(xiàn)發(fā)送驗證碼短信吧2025-03-03
Java數(shù)據(jù)結(jié)構(gòu)與算法學習之循環(huán)鏈表
循環(huán)鏈表是另一種形式的鏈式存儲結(jié)構(gòu)。它的特點是表中最后一個結(jié)點的指針域指向頭結(jié)點,整個鏈表形成一個環(huán)。本文將為大家詳細介紹一下循環(huán)鏈表的特點與使用,需要的可以了解一下2021-12-12
SpringBoot結(jié)合JSR303對前端數(shù)據(jù)進行校驗的示例代碼
這篇文章主要介紹了SpringBoot結(jié)合JSR303對前端數(shù)據(jù)進行校驗的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-09-09
Spring Cloud Config RSA簡介及使用RSA加密配置文件的方法
Spring Cloud 為開發(fā)人員提供了一系列的工具來快速構(gòu)建分布式系統(tǒng)的通用模型 。本文重點給大家介紹Spring Cloud Config RSA簡介及使用RSA加密配置文件的方法,感興趣的朋友跟隨腳步之家小編一起學習吧2018-05-05

