資料結構之佇列

2022-06-28 19:24:09 字數 1651 閱讀 1348

資料結構分為:線性結構,非線性結構

線性結構:佇列,鍊錶,棧,

非線性結構:樹,圖

佇列是個有序線性表,一般有陣列或鍊錶實現

佇列遵循先入先出(fifo)原則

結構示意圖:

使用陣列模擬佇列:

class

arrayqueue

public

boolean

isfull()

public

boolean

isempty()

public

void addqueue(int

val)

rear++;

arr[rear] =val;

}public

intgetqueue()

front++;                  //元素出佇列 前端後移一位

return

arr[front];

}public

void

showqueue()

for(int i = front+1; i <= rear; i++)

system.out.printf("arr[%d] = %d\n",i,arr[i]);

}public

intheadqueue()

return arr[front+1];}}

使用陣列模擬佇列存在乙個問題,即當佇列滿的時候,後端到達陣列最大位置,當元素出佇列時,前端後移,但是陣列中前端之前的記憶體空間就不能再存資料了,造成資源浪費,且佇列效率低,因此一般使用陣列模擬環形佇列。

陣列實現環形佇列:

front改為指向佇列的第乙個元素

rear改為指向佇列的最後乙個元素的後乙個位置

判定佇列滿的條件 (rear + 1 )%maxsize == front

判空條件  rear == front

佇列中元素個數  (rear - front + maxsize) % maxsize

rear front 初始值為0

實現如下:

class

circlequeue

public

boolean

isfull()

public

boolean

isempty()

public

void addcirclequeue(int

val)

arr[rear] =val;

rear = (rear + 1) %maxsize;

}public

intgetcirclequeue()

int val =arr[front];

front = (front + 1) %maxsize;

return

val;

}public

void

showcirclequeue()

for(int i = front; i < front + size(); i++)

}public

intsize()

}

資料結構之佇列

八 佇列 鏈式佇列 鍊錶實現 隊尾 rear 隊首 front 靜態佇列 陣列實現 必須是迴圈佇列 需要幾個引數來確定,各引數含義 1 佇列初始化 front和rear值都是0 2 佇列非空 front代表佇列第乙個元素 rear代表佇列最後乙個元素的 下乙個元素 3 佇列空 front和rear相...

資料結構之佇列

與棧相反,佇列是一種先進先出的線性表,它只允許在表的一端進行,而在另一端刪除元 素。在佇列中,允許插入的一端叫做隊尾,允許刪除的一端則稱為隊頭。1 鏈佇列 佇列的鏈式表示和實現 用鍊錶表示的佇列簡稱為鏈佇列,乙個鏈佇列顯然需要兩個分別指示對頭和隊尾的指標 分別稱為頭指 針和尾指標 才能唯一確定。這裡...

資料結構之佇列

一 佇列的介紹 佇列 queue 是一種線性儲存結構。它有以下幾個特點 1 佇列中資料是按照 先進先出 fifo,first in first out 方式進出佇列的。2 佇列只允許在 隊首 進行刪除操作,而在 隊尾 進行插入操作。佇列通常包括的兩種操作 入佇列 和 出佇列。1.佇列的示意圖 佇列中...