佇列是乙個有序的列表,原則:先入先出
簡單陣列實現:front指向佇列頭的前乙個位置;rear指向佇列的最後乙個位置
front和rear的初始值都是-1;
//使用陣列模擬佇列--編寫乙個arrayqueue類
class arrayqueue
//判斷佇列是否為空
public boolean isempty()
//判斷佇列否未滿
public boolean isfull()
//像佇列中新增元素
public void addqueue(int n) else }
//佇列中取出元素
public int getqueue() else }
//遍歷佇列中的元素
public void showqueue()
for(int i=front+1;i<=rear;i++) }
//顯示佇列的頭元素
public int headqueue()
return array[front+1]; }
}
上述**實現的佇列存在問題:陣列只能使用一次,沒有達到復用的效果
使用陣列模擬環形佇列:1、front和rear調整:front指向對列的第乙個元素,rear指向佇列的最後乙個元素的後乙個位置會空出乙個空間為約定 front和rear的初始值都為0
2、隊列為空的條件 ; rear=front; 佇列滿:(rear+1)%maxsize=front;
佇列中的有效資料個數:(rear+maxsize- front)%maxsize
這個具體分析可以看看資料結構的書。找個具體的例子畫畫圖家可以理解啦。。。
class circlearrayqueue
//判斷佇列是否為空
public boolean isempty()
//判斷佇列是否滿
public boolean isfull()
//獲取佇列中有效地資料個數
public int size()
//向佇列中新增元素
public void addqueue(int n)
array[rear]=n;
rear=(rear+1)%maxsize;
}//佇列中取出元素
public int getqueue() else
} //遍歷佇列中的元素
public void showqueue()
for(int i=front;i}
//顯示佇列的頭元素
public int headqueue()
return array[front];
} }
環形陣列例程
乙個簡單的環形陣列例程,參考了網路上的資源。define circlebuffer size 8 unsigned char circlebuffer circlebuffer size unsigned char writeindex 0 unsigned char readindex 0 uns...
環形陣列求最大子陣列和
陣列是環形的,即首尾相接 下標n 1的元素後面的元素下標為0 求最大子陣列和 環形陣列求最大子陣列和 解法一 把該環形陣列從某一點展開,連寫兩遍 複製乙份接到自己後面 然後當成無環的陣列求最大子陣列和,但這裡要限制乙個條件,就是最大子陣列的長度不可以超過n,所以求的時候要注意判斷。例如 上圖中展開寫...
環形陣列迴圈 210105
給定乙個含有正整數和負整數的環形陣列 nums。如果某個索引中的數 k 為正數,則向前移動 k 個索引。相反,如果是負數 k 則向後移動 k 個索引。因為陣列是環形的,所以可以假設最後乙個元素的下乙個元素是第乙個元素,而第乙個元素的前乙個元素是最後乙個元素。確定 nums 中是否存在迴圈 或週期 迴...