久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      java中如何通過數(shù)組實(shí)現(xiàn)隊(duì)列

      java中如何通過數(shù)組實(shí)現(xiàn)隊(duì)列

      數(shù)組實(shí)現(xiàn)隊(duì)列方法如下:

      java中如何通過數(shù)組實(shí)現(xiàn)隊(duì)列

      1、隊(duì)列本身是有序列表,若使用數(shù)組的結(jié)構(gòu)來存儲(chǔ)隊(duì)列的數(shù)據(jù),則隊(duì)列數(shù)組的聲明如上圖,其中maxSize是隊(duì)列的最大容量;

      2、隊(duì)列的輸入、輸出分別從前后端處理,因此需要front和rear兩個(gè)變量分別記錄隊(duì)列前后端的下標(biāo),其會(huì)隨著數(shù)據(jù)輸入而改變;

      3、將數(shù)據(jù)存入的隊(duì)列為“queue":

      ①、對(duì)空:rear==front;

      ②、隊(duì)滿:rear=maxSize-1;

      ③、當(dāng)尾指針 rear < maxSize – 1時(shí),則將數(shù)據(jù)存入rear所指的數(shù)組中。

      視頻教程分享:java視頻教程

      具體實(shí)現(xiàn)代碼如下:

      (1)、判斷隊(duì)列是否滿

      (2)、判斷隊(duì)列是否為空

      (3)、添加數(shù)據(jù)到隊(duì)列中

      (4)、獲取隊(duì)列的數(shù)據(jù),出隊(duì)列;

      (5)、顯示當(dāng)前隊(duì)列數(shù)據(jù);

      (6)、顯示隊(duì)列的頭數(shù)據(jù),注意不是取出數(shù)據(jù);

      示例如下:

      package com.ycx.queue; import java.util.Scanner;  public class ArrayQueueDemo {     public static void main(String[] args) {         //測(cè)試         //創(chuàng)建一個(gè)隊(duì)列         ArrayQueue queue = new ArrayQueue(3);         char key = ' ';//接受用戶輸入         Scanner input = new Scanner(System.in);         boolean flag = true; //控制循環(huán) 默認(rèn)死循環(huán)          //輸出菜單         while (flag){             System.out.println("s(show),顯示隊(duì)列");             System.out.println("e(exit),退出隊(duì)列");             System.out.println("a(add),添加數(shù)據(jù)到隊(duì)列");             System.out.println("g(get),從隊(duì)列取出數(shù)據(jù)");             System.out.println("h(head),查看隊(duì)列頭的數(shù)據(jù)");              key=input.next().charAt(0);//接受收一個(gè)字符             switch (key){                 case 's':                     queue.showQueue();                     break;                 case 'a':                     System.out.println("輸一個(gè)數(shù)");                     int val=input.nextInt();                     queue.addQueue(val);                     break;                 case 'g':   //取出數(shù)據(jù)  因?yàn)榉椒ɡ锩鎾伋隽水惓?所以這里需要捕獲                     try{                         int res=queue.getQueue();                         System.out.printf("取出的數(shù)據(jù)為%dn",res);                     }catch (Exception e){                         System.out.println(e.getMessage());                     }                     break;                 case 'h':                      try{                          int res=queue.headQueue();                          System.out.printf("隊(duì)列頭的數(shù)據(jù)為%dn",res);                      }catch (Exception e){                          System.out.println(e.getMessage());                      }                      break;                 case 'e':    //退出程序                     input.close();//關(guān)閉                     flag=false;                     break;                      default:                         break;             }         }         System.out.println("程序退出");     } }  //一、使用數(shù)組模擬隊(duì)列-編寫一個(gè)ArrayQueue類  class ArrayQueue{     private  int maxSize;//表示數(shù)組的最大容量     private  int front; //隊(duì)列頭     private  int rear; // 隊(duì)列尾     private  int[] arr; // 該數(shù)組用于存放數(shù)據(jù),模擬隊(duì)列       //創(chuàng)建隊(duì)列的構(gòu)造器     public ArrayQueue(int arrMaxsize){         maxSize=arrMaxsize;         arr = new int[maxSize];// 初始化數(shù)組         front=-1;//指向隊(duì)列頭部,分析出front是指向隊(duì)列頭的前一個(gè)位置 有效數(shù)據(jù)的位置         rear=-1;//指向隊(duì)列尾,指向隊(duì)列尾的數(shù)據(jù)(即就是隊(duì)列最后一個(gè)位置 )     }      //1.判斷隊(duì)列是否滿     public boolean isFull(){         return rear==maxSize-1;//因?yàn)閞ear是從-1開始的(如果不理解就看筆記上的圖)     }      //2.判斷隊(duì)列是否為空     public boolean isEmpty(){         return rear==front;     }      //3.添加數(shù)據(jù)到隊(duì)列中     public void addQueue(int n){         //判斷隊(duì)列是否為滿         if(isFull()){             System.out.println("隊(duì)列已滿,不能加入數(shù)據(jù)");         }         rear++;//rear 后移         arr[rear]=n; //也可以直接寫成 arr[++rear]:rear先加再取值     }      //4.獲取隊(duì)列的數(shù)據(jù),出隊(duì)列     public  int getQueue(){         if(isEmpty()){             throw new RuntimeException("隊(duì)列空,不能取數(shù)據(jù)");         }         front++; //front 后移 因?yàn)閒ront指向的是前一個(gè)元素(front=-1)         return arr[front];     }      //5.顯示當(dāng)前隊(duì)列數(shù)據(jù)     public void showQueue() {          //遍歷          if(isEmpty()){              System.out.println("當(dāng)前隊(duì)列為空");              return;          }         for (int i = 0; i <arr.length ; i++) {             System.out.printf("arr[%d]=%dn",i,arr[i]); //格式化輸出         }     }      //6.顯示隊(duì)列的頭數(shù)據(jù),注意不是取出數(shù)據(jù)     public int headQueue(){         if(isEmpty()){             throw new RuntimeException("隊(duì)列為空");         }         return arr[front+1]; //注意:front需要加1     } }

      問題分析并優(yōu)化

      (1)、缺點(diǎn):數(shù)組只能使用一次,不能實(shí)現(xiàn)代碼的復(fù)用。
      (當(dāng)把數(shù)組中所有的元素取出來后,數(shù)組為空,但無法添加元素進(jìn)入數(shù)組)

      (2)、優(yōu)化:可以改成一個(gè)環(huán)形的數(shù)組(進(jìn)行取余)。

      相關(guān)文章教程推薦:java快速入門

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)