資料結構 佇列的基本操作

2021-10-25 15:10:09 字數 3413 閱讀 5426

佇列是一種先進先出(first in first out)的線性表,簡稱fifo。與棧不同,棧是一種後進先出(先進後出)的線性表。在佇列中,允許插入的一端稱為隊尾,允許刪除的一端稱為隊頭。假設佇列是q=(a1,a2,…,an),那麼a1就是隊頭元素,而an是隊尾元素。這樣我們就可以刪除時,總是從a1開始,而插入時,列在最後。這也比較符合我們通常生活中的習慣,排在第乙個的優先出列,最後來的當然在隊伍的最後。佇列分為順序佇列和迴圈佇列。順序佇列我們可以利用陣列或者鍊錶實現。這裡,我們選擇用鍊錶實現順序佇列。

鏈佇列的入隊和出隊

鏈佇列的入隊操作

status enqueue

(linkqueue *q,qelemtype e)

鏈佇列的出隊操作
status dequeue

(linkqueue *q,qelemtype *e)

鏈佇列的基本操作**(c語言版)
#include

"stdio.h"

#include

"stdlib.h"

#define ok 1

#define error 0

#define true 1

#define false 0

#define overflow -2

typedef

int qelemtype;

typedef

int status;

typedef

struct qnode

qnode,

*queueptr;

typedef

struct

linkqueue;

status initqueue

(linkqueue *q)

status enqueue

(linkqueue *q,qelemtype e)

void

showqueueelement

(linkqueue q)

printf

("\n");

}int

queuelength

(linkqueue q)

return count;

}status dequeue

(linkqueue *q,qelemtype *e)

status gethead

(linkqueue q,qelemtype *e)

status clearqueue

(linkqueue *q)

q->front=q->rear;

return ok;

}status queueempty

(linkqueue *q)

status destroyqueue

(linkqueue *q)

return ok;

}void

main()

case2:

break;}

case3:

case4:

}break;}

case5:

case6:

case7:

case8:

case9:

}system

("pause");

}}

迴圈佇列就是將佇列儲存空間的最後乙個位置繞到第乙個位置,形成邏輯上的環狀空間,供佇列迴圈使用。在迴圈佇列結構中,當儲存空間的最後乙個位置已被使用而再要進入隊運算時,只需要儲存空間的第乙個位置空閒,便可將元素加入到第乙個位置,即將儲存空間的第乙個位置作為隊尾。迴圈佇列可以更簡單防止偽溢位的發生,但佇列大小是固定的。

在迴圈佇列中,當隊列為空時,有front=rear,而當所有佇列空間全佔滿時,也有front=rear。為了區別這兩種情況,規定迴圈佇列最多只能有maxsize-1個佇列元素,當迴圈佇列中只剩下乙個空儲存單元時,佇列就已經滿了。因此,佇列判空的條件是front=rear,而佇列判滿的條件是front=(rear+1)%maxsize。

迴圈佇列的入隊和出隊

迴圈佇列的入隊操作

status enqueue

(sqqueue *q,qelemtype e)

迴圈佇列的出隊操作
status dequeue

(sqqueue *q,qelemtype *e)

迴圈佇列的基本操作**(c語言版)
#include

"stdio.h"

#include

"stdlib.h"

#define maxqsize 100

#define ok 1

#define error 0

#define true 1

#define false 0

#define overflow -2

typedef

int qelemtype;

typedef

int status;

typedef

struct

sqqueue;

status initqueue

(sqqueue *q)

status enqueue

(sqqueue *q,qelemtype e)

void

showqueueelement

(sqqueue q)

intqueuelength

(sqqueue q)

status dequeue

(sqqueue *q,qelemtype *e)

status isfull

(sqqueue *q)

status isempty

(sqqueue *q)

status clearqueue

(sqqueue *q)

status gethead

(sqqueue q,qelemtype *e)

status destroyqueue

(sqqueue *q)

void

main()

case2:

break;}

case3:

case4:

case5:

}break;}

case6:

case7:

case8:

case9:

case10:

}system

("pause");

}}

資料結構佇列的基本操作

include include 鍊錶 佇列的鏈式儲存結構 typedef struct queuenode qnode,queueptr 指向佇列頭和尾的指標結構體 typedef struct queue int main 構造乙個空佇列 void initqueue queue q 向隊尾插入元...

資料結構 佇列的基本操作

佇列 簡稱隊,一種受限的線性表,只允許在表的一端進行插入,在表的另一端進行刪除操作 先進先出 隊頭 進行刪除的一端 隊尾 進行插入的一端 空佇列 不含任何元素的空表 佇列的基本操作 佇列分為順序佇列 迴圈佇列和鏈式佇列,順序佇列容易發生假溢位現象 隊尾超過限定長度 故不常用,下面是迴圈佇列和鏈式佇列...

資料結構 鏈佇列基本操作

include 鏈佇列的基本操作,首先我們要知道佇列是在隊頭進行刪除,隊尾進行插入 include includetypedef struct sq sq typedef struct squeue 到此,佇列的資料結構型別定義完畢 void init squeue squeue p 佇列的初始化 ...