最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java 數(shù)據(jù)結(jié)構(gòu)之棧與隊(duì)列

 更新時(shí)間:2017年07月27日 15:00:59   投稿:lqh  
這篇文章主要介紹了java 數(shù)據(jù)結(jié)構(gòu)之棧與隊(duì)列的相關(guān)資料,這里對(duì)java中的棧和隊(duì)列都做出實(shí)現(xiàn)實(shí)例來幫助大家理解學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu),需要的朋友可以參考下

java 數(shù)據(jù)結(jié)構(gòu)之棧與隊(duì)列

一:對(duì)列

隊(duì)列是一種先進(jìn)先出的數(shù)據(jù)結(jié)構(gòu)

實(shí)現(xiàn)代碼:

package Queue; 
 
/* 
 * 使用java構(gòu)建隊(duì)列,并模擬實(shí)現(xiàn)隊(duì)列的入隊(duì)和出對(duì)方法 
 */ 
 
public class Queue {   //隊(duì)列類 
 
  private int maxSize; //定義隊(duì)列的長(zhǎng)度 
  private int[] arrQueue;   //隊(duì)列 
  private int rear;   //定義隊(duì)列的尾指針 
  private int front;  //定義隊(duì)列的頭指針 
  private int empty; //元素的個(gè)數(shù) 
   
  public Queue(int s)  //初始化構(gòu)造函數(shù) 
  { 
    maxSize = s; 
    arrQueue = new int[s]; 
    rear = -1; 
    front=0; 
    empty = 0; 
  } 
   
  //實(shí)現(xiàn)插入方法 
  public void insert(int m) 
  { 
    if(rear == maxSize-1)  //處理循環(huán) 
      rear = -1;    
    arrQueue[++rear] = m;  //對(duì)尾指針加一,把值放在隊(duì)列結(jié)尾 
    empty++;   //隊(duì)列元素個(gè)數(shù)加1 
    System.out.println("隊(duì)列入隊(duì)元素 為:" + m); 
  } 
   
  //實(shí)現(xiàn)出棧的方法,即取得隊(duì)列的頭元素 
  public int remove() 
  { 
    int temp = arrQueue[front++]; //將棧頂元素賦值給temp,棧頂指針加1 
    if(front == maxSize) //處理循環(huán) 
      front = 0; 
    empty--; //元素個(gè)數(shù)-1 
    return temp; 
  } 
   
  //判斷隊(duì)列是否為空 
  public boolean isEmpty() 
  { 
    return (empty==0); 
  } 
   
  //判斷對(duì)列是否為滿 
  public boolean isFull() 
  { 
    return (empty == maxSize); 
  } 
   
  //返回隊(duì)列長(zhǎng)度 
  public int qLong() 
  { 
    return empty; 
  } 
   
  public static void main(String[] args) { 
    Queue q = new Queue(5); //初始化隊(duì)列為5個(gè)元素 
     
    q.insert(1); 
    q.insert(2); 
    q.insert(3); 
    q.insert(4); 
    q.insert(5); 
     
    int t1 = q.remove(); 
    System.out.println("隊(duì)列元素出隊(duì):" + t1); 
    int t2 = q.remove(); 
    System.out.println("隊(duì)列元素出隊(duì):" + t2); 
     
    System.out.println("隊(duì)列是否為空:" + q.isEmpty()); 
    System.out.println("隊(duì)列是否為滿:" + q.isFull()); 
    System.out.println("隊(duì)列的長(zhǎng)度:" + q.qLong()); 
  } 
   
} 

二:棧

棧是一種先進(jìn)后出的數(shù)據(jù)結(jié)構(gòu)

1:使用數(shù)組模擬棧

package Statck; 
/* 
 * 使用java構(gòu)建棧,并模擬實(shí)現(xiàn)棧的入棧和出棧方法 
 * 使用數(shù)組實(shí)現(xiàn) 
 */ 
 
public class Statck1 { 
 
  private int maxSize;   //棧的最多元素?cái)?shù) 
  private int top;  //棧頂指針 
  private int len;   //棧的深度 
  private int[] arrStack; // 模擬棧 
   
  //棧的初始化 
  public Statck1(int s){ 
    maxSize = s; 
    len =0; 
    top= -1; 
    arrStack = new int[s]; 
  } 
   
  //獲取棧的長(zhǎng)度 
  public int getLen(){ 
    return len; 
  } 
   
  //獲取當(dāng)前棧還能插入多少個(gè)f元素 
  public int getLeaveLen(){ 
    return (maxSize-len); 
  } 
  //判斷棧是否滿 
  public boolean isFull(){ 
    return (len==maxSize); 
  } 
   
  //判斷棧是否為空 
  public boolean isEmpty(){ 
    return (len ==0); 
  } 
   
  //元素入棧 
  public void inStack(int s) 
  { 
    arrStack[++top] = s; //棧頂指針加1,入棧 
    System.out.println("元素入棧:" + s); 
    len ++ ;//棧深度+1 
  } 
   
  //元素出棧 
  public int outStack() 
  { 
    int temp = arrStack[top--];//賦值之后減1 
    System.out.println("元素出棧:" + temp); 
    len--;  //棧深度-1 
    return temp; 
  } 
   
  public static void main(String[] args) { 
    Statck1 s = new Statck1(5); 
     
    s.inStack(1); 
    s.inStack(2); 
    s.inStack(3); 
    s.inStack(4); 
    s.inStack(5); 
     
    s.outStack(); 
    s.outStack(); 
    System.out.println("棧的長(zhǎng)度:" + s.getLen()); 
    System.out.println("還能入棧元素個(gè)數(shù):" + s.getLeaveLen()); 
    System.out.println("棧的是否為空:" + s.isEmpty()); 
    System.out.println("棧的是否為滿:" + s.isFull()); 
  } 
} 

2:使用鏈表模擬棧

package Statck; 
 
import java.util.ArrayList; 
import java.util.EmptyStackException; 
import java.util.List; 
 
/* 
 * 使用java構(gòu)建棧,并模擬實(shí)現(xiàn)棧的入棧和出棧方法 
 * 使用鏈表實(shí)現(xiàn) 
 */ 
 
public class Statck2<E extends Object> {  
   
  private List<E> statck = new ArrayList<E>();  
   
  public Statck2(){ 
       //棧的初始化 
  } 
   
  //清空棧 
  public void clear(){ 
    statck.clear(); 
    System.out.println("清空棧.........."); 
  } 
  //判斷棧是否為空 
  public boolean isEmpty(){ 
    return statck.isEmpty(); 
  } 
  //獲取棧頂元素 
  public E getTop(){ 
    if(isEmpty()) 
      return null; 
    return statck.get(0); 
  } 
   
  //彈出棧操作 
  public E pop(){ 
    if (isEmpty())  
      throw new EmptyStackException();  
    System.out.println(statck.size() + "\t 出棧"); 
    return statck.remove(statck.size() - 1);  
  } 
   
  //壓入棧操作 
  public void push(E e){ 
    statck.add(e); 
    System.out.println(e + "\t 入棧"); 
  } 
   
  //獲取當(dāng)前棧的深度 
  public int getStatckSize(){ 
    if(isEmpty()) 
      throw new EmptyStackException(); 
    return statck.size(); 
  } 
   
  public static void main(String[] args) { 
    Statck2 s = new Statck2(); 
    s.clear();      //清空棧 
    System.out.println("當(dāng)前棧是否為空:" + s.isEmpty()); 
    s.push(1); 
    s.push(2); 
    s.push(3); 
     
    s.pop(); 
    System.out.println("當(dāng)前棧的深度為:" + s.getStatckSize()); 
    System.out.println("當(dāng)前棧頂元素為:" + s.getTop()); 
  } 
   
} 

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持,如有疑問請(qǐng)留言或者到本站社區(qū)交流討論,大家共同進(jìn)步!

相關(guān)文章

  • IDEA安裝后找不到.vmoptions文件的問題及解決

    IDEA安裝后找不到.vmoptions文件的問題及解決

    這篇文章主要介紹了IDEA安裝后找不到.vmoptions文件的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Spring Boot + MyBatis Plus 高效開發(fā)實(shí)戰(zhàn)從入門到進(jìn)階優(yōu)化(推薦)

    Spring Boot + MyBatis Plus 高效開發(fā)實(shí)戰(zhàn)從入

    本文將詳細(xì)介紹 Spring Boot + MyBatis Plus 的完整開發(fā)流程,并深入剖析分頁查詢、批量操作、動(dòng)態(tài) SQL、樂觀鎖、代碼優(yōu)化等實(shí)戰(zhàn)技巧,感興趣的朋友一起看看吧
    2025-04-04
  • JVM參數(shù)-Xms和-Xmx的作用及說明

    JVM參數(shù)-Xms和-Xmx的作用及說明

    這篇文章主要介紹了JVM參數(shù)-Xms和-Xmx的作用及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • MyBatis在insert插入操作時(shí)返回主鍵ID的配置(推薦)

    MyBatis在insert插入操作時(shí)返回主鍵ID的配置(推薦)

    這篇文章主要介紹了MyBatis在insert插入操作時(shí)返回主鍵ID的配置的相關(guān)資料,需要的朋友可以參考下
    2017-10-10
  • java實(shí)現(xiàn)mysql操作類分享 java連接mysql

    java實(shí)現(xiàn)mysql操作類分享 java連接mysql

    這篇文章主要介紹了java實(shí)現(xiàn)的mysql操作類示例,大家在連接數(shù)據(jù)的時(shí)候可以直接使用了
    2014-01-01
  • SpringBoot單點(diǎn)登錄實(shí)現(xiàn)過程詳細(xì)分析

    SpringBoot單點(diǎn)登錄實(shí)現(xiàn)過程詳細(xì)分析

    這篇文章主要介紹了SpringBoot單點(diǎn)登錄實(shí)現(xiàn)過程,單點(diǎn)登錄英文全稱Single?Sign?On,簡(jiǎn)稱就是SSO。它的解釋是:在多個(gè)應(yīng)用系統(tǒng)中,只需要登錄一次,就可以訪問其他相互信任的應(yīng)用系統(tǒng)
    2022-12-12
  • 劍指Offer之Java算法習(xí)題精講N叉樹的遍歷及數(shù)組與字符串

    劍指Offer之Java算法習(xí)題精講N叉樹的遍歷及數(shù)組與字符串

    跟著思路走,之后從簡(jiǎn)單題入手,反復(fù)去看,做過之后可能會(huì)忘記,之后再做一次,記不住就反復(fù)做,反復(fù)尋求思路和規(guī)律,慢慢積累就會(huì)發(fā)現(xiàn)質(zhì)的變化
    2022-03-03
  • Spring 注入static屬性值方式

    Spring 注入static屬性值方式

    文本介紹了Spring如何從屬性文件給static屬性注入值,在寫一些與配置相關(guān)的工具類時(shí)常用。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 全面解析Spring Security 內(nèi)置 Filter

    全面解析Spring Security 內(nèi)置 Filter

    這篇文章主要介紹了Spring Security 內(nèi)置 Filter的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • MyBatis-Plus通用CRUD操作的實(shí)現(xiàn)

    MyBatis-Plus通用CRUD操作的實(shí)現(xiàn)

    MyBatis-Plus是基于MyBatis的增強(qiáng)工具,主要目的是簡(jiǎn)化MyBatis的使用并提升開發(fā)效率,它提供了通可以用CRUD操作、分頁插件、多種插件支持、自動(dòng)代碼生成器等功能,感興趣的可以了解一下
    2024-10-10

最新評(píng)論

大姚县| 南岸区| 台北市| 达尔| 确山县| 大姚县| 顺义区| 揭阳市| 宽城| 民和| 周至县| 安图县| 隆昌县| 寻甸| 岚皋县| 久治县| 博野县| 中卫市| 康定县| 荣成市| 江都市| 柘城县| 甘洛县| 临海市| 蓬溪县| 依安县| 阳原县| 汉寿县| 承德县| 临安市| 五常市| 阜平县| 康定县| 呼玛县| 宿迁市| 广南县| 高邮市| 勐海县| 新民市| 恩平市| 平定县|