資料結構和演算法學習 佇列(順序)

2021-10-07 23:12:40 字數 1817 閱讀 3639

將尾指標往後移:rear+1 , 當front == rear 【空】

若尾指標 rear 小於佇列的最大下標 maxsize-1,則將資料存入 rear所指的陣列元素中,否則無法存入資料。 rear == maxsize - 1[佇列滿]

class

arrayqueue

//判斷佇列是否滿了

public

boolean

isfull()

//判斷佇列是否為空

public

boolean

isempty()

// 新增資料到佇列中

public

void

addqueue

(int n)

arr[

++rear]

= n;

}// 獲取佇列的資料, 出佇列

public

intgetqueue()

return arr[

++front];}

// 顯示佇列的所有資料

public

void

showqueue()

for(

int i = front+

1; i <= rear; i++)}

// 顯示佇列的頭資料, 注意不是取出資料

public

intheadqueue()

return arr[front];}

}

public

class

arrayqueuedemo

}

該佇列只能執行一次,當存過的資料個數超過了最大數,即使全部取出來了,也不能再儲存

對前面的陣列模擬佇列的優化,充分利用陣列. 因此將陣列看做是乙個環形的。(通過取模的方式來實現即可)

尾索引的下乙個為頭索引時表示佇列滿,即將佇列容量空出乙個作為約定,這個在做判斷佇列滿的時候需要注意 (rear + 1) % maxsize == front 滿]

rear == front [空]

class

circlearrayqueue

//判斷佇列是否滿了

public

boolean

isfull()

//判斷佇列是否為空

public

boolean

isempty()

// 新增資料到佇列

public

void

addqueue

(int n)

arr[rear]

= n ;

rear =

(rear+1)

%maxsize;

}// 獲取佇列的資料, 出佇列

public

intgetqueue()

int value = arr[front]

; front =

(front+1)

%maxsize;

return value;

}// 顯示佇列的所有資料

public

void

showqueue()

for(

int i = front;i < front +

size()

; i ++)}

//陣列中還有元素的個數

private

intsize()

}

public class circlearrayqueuedemo

}該佇列中會有乙個位置用不了,用於佇列頭與尾相連

資料結構和演算法學習日記 佇列

佇列是一種特殊的線性表,可以用陣列或鍊錶來表示。遵循先入先出的原則。佇列的插入操作位於隊尾,佇列的刪除操作位於隊首。下溢 現象 當隊列為 空時,做出隊運算時產生的溢位現象。真上溢 現象 當佇列滿時,做入隊操作產生空間溢位的現象。假上溢 現象 由於入隊和出隊操作中,頭尾指標都只向上移動,從而導致被刪元...

資料結構和演算法學習 棧

棧是一種重要的線性結構,可以說是線性表的一種具體形式 官方定義 棧是乙個後進先出的線性表,它要求只在表尾進行刪除和插入操作 棧是一種特殊的線性表 順序表 鍊錶 操作上有一些特殊要求 1.棧的元素必須 後進先出 2.棧的操作只能在這個線性表的表尾進行。注 對於棧來說,表尾稱為棧的棧頂 top 相應的表...

資料結構和演算法學習重點

1 資料結構是指一組資料的儲存結構 2 演算法就是運算元據的方法 3 資料結構和演算法是相輔相成的,資料結構是為演算法服務的,而演算法要作用在特定的資料結構之上。資料結構和演算法解決的是如何更省 更快地儲存和處理資料的問題,因此,我們就需要乙個考量效率和資源消耗的方法,這就是複雜度分析方法。在學習資...