鏈佇列的定義與實現

2021-10-10 19:51:37 字數 2010 閱讀 3959

說明1:以下**在vs2017中編譯通過,讀者使用時可以直接將標頭檔案(linkqueue.h),原始檔(linkqueue.c),主檔案(main.c)中的內容直接拷貝過去,即可編譯執行!

說明2:執行圖示

標頭檔案:linkqueue.h(函式的宣告)

#ifndef  _linkqueue_h_

#define _linkqueue_h_

#include

#include

#include

#include

#define error -1

#define elemtype int

//鏈佇列結點

typedef

struct queuenode

queuenode,

*pqueuenode;

//鏈佇列

typedef

struct

linkqueue;

void

initqueue

(linkqueue* q)

;pqueuenode createnode

(elemtype data)

;void

enqueue

(linkqueue* q, elemtype data)

;void

dequeue

(linkqueue* q)

;int

gethead

(linkqueue* q)

;void

destoryqueue

(linkqueue* q)

;void

clearqueue

(linkqueue* q)

;bool emptyqueue

(linkqueue* q)

;int

lengthqueue

(linkqueue* q)

;void

showqueue

(linkqueue* q)

;#endif

// ! _linkqueue_h_

原始檔:linkqueue.c(函式的定義)

#include

"linkqueue.h"

void

initqueue

(linkqueue* q)

pqueuenode createnode

(elemtype data)

void

enqueue

(linkqueue* q, elemtype data)

void

dequeue

(linkqueue* q)

intgethead

(linkqueue* q)

void

clearqueue

(linkqueue* q)

q->rear = q->front;

}void

destoryqueue

(linkqueue* q)

bool emptyqueue

(linkqueue* q)

intlengthqueue

(linkqueue* q)

return length;

}void

showqueue

(linkqueue* q)

printf

("<:rear>

}

主檔案:main.c(測試檔案)

#include

"linkqueue.h"

intmain()

迴圈佇列與鏈佇列的簡單實現

為充分利用向量空間,克服 假溢位 現象的方法是 將向量空間想象為乙個首尾相接的圓環,並稱這種向量為迴圈向量。儲存在其中的佇列稱為迴圈佇列 circular queue 通過上圖可以看出,如果使用順序表作為佇列的話,當處於d狀態則不能繼續插入新的隊尾元素,否則會因為陣列越界而導致程式 被破壞。當隊列為...

迴圈佇列的定義與實現

說明1 以下 在vs2017中編譯通過,讀者使用時可以直接將標頭檔案 sqqueue.h 原始檔 sqqueue.c 主檔案 main.c 中的內容直接拷貝過去,即可編譯執行!說明2 執行圖示 標頭檔案 sqqueue.h 函式的宣告 ifndef sqqueue h define sqqueue ...

鏈棧與鏈佇列

首先,我們先搞清楚,棧的原理就是現金後出,譬如往箱子裡面放球,最先放進去的最後拿出來。下面給一下我臭臭的 include include 定義結構體 struct node int main q p 列印建立的鍊錶 t head next while t null 鏈棧 先入後出,因此新入的數應該在...