資料結構分為:線性結構,非線性結構
線性結構:佇列,鍊錶,棧,
非線性結構:樹,圖
佇列是個有序線性表,一般有陣列或鍊錶實現
佇列遵循先入先出(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
實現如下:
classcirclequeue
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.佇列的示意圖 佇列中...