C語言 翻轉佇列內容

2021-10-08 08:25:16 字數 2350 閱讀 5658

迴圈佇列/鏈式佇列的簡單操作

例題佇列有兩種儲存表示,順序表示和鏈式表示。

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...