亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

java 數(shù)據(jù)結構之棧與隊列

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

java 數(shù)據(jù)結構之棧與隊列

一:對列

隊列是一種先進先出的數(shù)據(jù)結構

實現(xiàn)代碼:

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

二:棧

棧是一種先進后出的數(shù)據(jù)結構

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

package Statck; 
/* 
 * 使用java構建棧,并模擬實現(xiàn)棧的入棧和出棧方法 
 * 使用數(shù)組實現(xiàn) 
 */ 
 
public class Statck1 { 
 
  private int maxSize;   //棧的最多元素數(shù) 
  private int top;  //棧頂指針 
  private int len;   //棧的深度 
  private int[] arrStack; // 模擬棧 
   
  //棧的初始化 
  public Statck1(int s){ 
    maxSize = s; 
    len =0; 
    top= -1; 
    arrStack = new int[s]; 
  } 
   
  //獲取棧的長度 
  public int getLen(){ 
    return len; 
  } 
   
  //獲取當前棧還能插入多少個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("棧的長度:" + s.getLen()); 
    System.out.println("還能入棧元素個數(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構建棧,并模擬實現(xiàn)棧的入棧和出棧方法 
 * 使用鏈表實現(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 入棧"); 
  } 
   
  //獲取當前棧的深度 
  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("當前棧是否為空:" + s.isEmpty()); 
    s.push(1); 
    s.push(2); 
    s.push(3); 
     
    s.pop(); 
    System.out.println("當前棧的深度為:" + s.getStatckSize()); 
    System.out.println("當前棧頂元素為:" + s.getTop()); 
  } 
   
} 

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

相關文章

  • mybatis-plus內置雪花算法主鍵重復問題解決

    mybatis-plus內置雪花算法主鍵重復問題解決

    本文主要介紹了mybatis-plus內置雪花算法主鍵重復問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-09-09
  • Java中String的intern()方法詳細說明

    Java中String的intern()方法詳細說明

    這篇文章主要介紹了Java中String的intern()方法詳細說明,String::intern()是一個本地方法,他的作用就是如果字符串常量池中已經(jīng)包含了一個等于此String對象的字符串,則返回代表池中的這個字符串額String對象的引用,需要的朋友可以參考下
    2023-11-11
  • Springboot整合JPA配置多數(shù)據(jù)源流程詳解

    Springboot整合JPA配置多數(shù)據(jù)源流程詳解

    這篇文章主要介紹了Springboot整合JPA配置多數(shù)據(jù)源,JPA可以通過實體類生成數(shù)據(jù)庫的表,同時自帶很多增刪改查方法,大部分sql語句不需要我們自己寫,配置完成后直接調用方法即可,很方便
    2022-11-11
  • java.sql.SQLException:?connection?holder?is?null錯誤解決辦法

    java.sql.SQLException:?connection?holder?is?null錯誤解決辦法

    這篇文章主要給大家介紹了關于java.sql.SQLException:?connection?holder?is?null錯誤的解決辦法,這個錯誤通常是由于連接對象為空或未正確初始化導致的,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-02-02
  • EditPlus運行java時從鍵盤輸入數(shù)據(jù)的操作方法

    EditPlus運行java時從鍵盤輸入數(shù)據(jù)的操作方法

    這篇文章主要介紹了EditPlus運行java時從鍵盤輸入數(shù)據(jù)的操作方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • SpringBoot靜態(tài)資源配置原理(源碼分析)

    SpringBoot靜態(tài)資源配置原理(源碼分析)

    這篇文章主要介紹了SpringBoot靜態(tài)資源配置原理(源碼分析),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • Java實現(xiàn)并發(fā)執(zhí)行定時任務并手動控制開始結束

    Java實現(xiàn)并發(fā)執(zhí)行定時任務并手動控制開始結束

    這篇文章主要介紹了Java實現(xiàn)并發(fā)執(zhí)行定時任務并手動控制開始結束,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • SpringBoot項目啟動時增加自定義Banner的簡單方法

    SpringBoot項目啟動時增加自定義Banner的簡單方法

    最近看到springboot可以自定義啟動時的banner,然后自己試了一下,下面這篇文章主要給大家介紹了SpringBoot項目啟動時增加自定義Banner的簡單方法,需要的朋友可以參考下
    2022-01-01
  • mybatis如何返回某列的最大值

    mybatis如何返回某列的最大值

    這篇文章主要介紹了mybatis如何返回某列的最大值操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Mybatis如何實現(xiàn)延遲加載及緩存

    Mybatis如何實現(xiàn)延遲加載及緩存

    這篇文章主要介紹了Mybatis如何實現(xiàn)延遲加載及緩存,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10

最新評論