迴圈佇列/鏈式佇列的簡單操作
例題佇列有兩種儲存表示,順序表示和鏈式表示。
typedef
struct sqqueue
sqqueue;
迴圈佇列可以將佇列想像成乙個環狀,頭、尾指標以及佇列元素之間的關係不變,通過取模,頭、尾指標可以在順序空間內以頭尾銜接的方式「迴圈」移動。當元素不斷入隊時,我們很容易**到頭尾指標指向同乙個陣列空間的情況,這個時候迴圈佇列是空還是滿呢?所以,在迴圈佇列中隊空隊滿的條件如下:
sqqueue q;
隊空條件:q.front==q.rear;
隊滿條件:(q.rear+1)%maxsize==q.front;
maxsize是佇列可能到達的最大長度。由此我們知道,迴圈佇列隊滿,實際上還保留了乙個元素空間。
typedef
struct qnode//結點描述
qnode;
typedef
struct
//佇列描述
linkqueue;
為了操作方便起見,給鏈隊新增乙個頭結點,並令頭指標始終指向頭結點。
//迴圈佇列
#include
#define maxsize 200
void
initqueue
(sqqueue* q)
intmain()
//鏈式佇列
void
initqueue
(linkqueue* q)
intmain()
//迴圈佇列
void
enqueue
(sqqueue* q)
;for
(int i =
0;i <
5;i++)}
intmain()
//鏈式佇列
void
enqueue
(linkqueue* q)
;for
(int i =
0;i <
5;i++)}
intmain()
//迴圈佇列
intdequeue
(sqqueue* q)
intmain()
//鏈式佇列
intdequeue
(linkqueue* q)
intmain()
(1)用隨機函式生成10個3位整數(100~999),把這些整數應用入隊操作存於佇列中;
(2)應用遍歷操作輸出佇列的內容;
(3)把佇列的內容翻轉,應用出隊操作輸出佇列的內容。
#include
#include
#define number 10
typedef
struct qnode
qnode;
typedef
struct
linkqueue;
void
initqueue
(linkqueue *q)
void
enqueue
(linkqueue *q)
printf
("\n");
}void
display
(linkqueue *q)
printf
("\n");
}void
reverse
(linkqueue *q)
move = move->next;
} move = m;
} move->next =
null
;//最後乙個元素的指標域置空
q->rear = move;
printf
("\n---------------翻轉後佇列元素---------------\n");
(notice:有空補上例題2.佇列求解迷宮問題)
c語言負數翻轉問題
1,在專案中,我們經常會用到變數,那麼在變數的定義和傳遞過程中,經常會出現負數的翻轉問題 int test funtion void poll fun unsigned int a void test negative 在資料傳遞過程中,int 型別的 1轉為unsigned char 型資料 原始...
佇列(C語言)
include include typedef int elemtype typedef struct list node typedef struct listquene quene 建立空佇列 quene createquene return q 判斷佇列是否為空 bool isemptyque...
C語言 佇列
佇列是一種特殊的 線性表,特殊之處在於它只允許在表的前端 front 進行刪除操作,而在表的後端 rear 進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。佇列的鏈式儲存結構 include include 定義乙個鍊錶 typedef st...