佇列之迴圈佇列詳解(C語言版)

2021-10-19 11:02:37 字數 3425 閱讀 5855

順序佇列在使用過程中容易出現虛假的滿狀態, 為了解決這個問題,就產生了乙個較巧妙的方法,將順序佇列臆造為乙個環狀的空間,稱之為迴圈佇列。迴圈佇列中指標和佇列元素之間的關係不變,我們只需要利用模運算就可以很容易實現指標的迴圈移動。但是迴圈佇列中存在乙個問題,在迴圈佇列中只憑頭指標front等於尾指標rear無法判別佇列空間是「空」還是「滿」,可有兩種處理方法:其一是另設乙個標誌位以區別佇列是「空」還是「滿」;其二是少用乙個元素空間,約定以「佇列頭指標在佇列尾指標的下一位置(指環狀的下一位置)上」作為佇列呈「滿」狀態的標誌。此處使用方法二來解決這個問題。

結構圖

**描述

//資料型別

#define elemtype int

//佇列的最大空間

#define maxsize 8

//佇列的管理結構

typedef

struct queue

queue;

初始化

//佇列初始化

void

initqueue

(queue *q)

入隊

//入隊操作

void

enqueue

(queue *q, elemtype x)

出隊

//出隊操作

void

dequeue

(queue *q)

列印佇列資料

//列印迴圈佇列中的資料

void

showqueue

(queue *q)

printf

("\n");

}

獲取隊頭元素

//獲取隊頭元素

void

gethdad

(queue *q, elemtype *v)

求佇列長度

//獲取佇列長度(元素個數)

intlength

(queue *q)

清空佇列

//清空佇列

void

clearqueue

(queue *q)

銷毀佇列

//銷毀佇列

void

destroyqueue

(queue *q)

以下提供迴圈佇列的測試**seqqueue.h

#ifndef __seqqueue_h__

#define __seqqueue_h__

#include

#include

#include

//資料型別

#define elemtype int

//佇列的最大空間

#define maxsize 8

//佇列的管理結構

typedef

struct queue

queue;

void

initqueue

(queue *q)

;void

enqueue

(queue *q, elemtype x)

;void

showqueue

(queue *q)

;void

dequeue

(queue *q)

;void

gethdad

(queue *q, elemtype *v)

;int

length

(queue *q)

;void

clearqueue

(queue *q)

;void

destroyqueue

(queue *q)

;#endif

//__seqqueue_h__

seqqueue.cpp

#include

"seqqueue.h"

//佇列初始化

void

initqueue

(queue *q)

//入隊操作

void

enqueue

(queue *q, elemtype x)

//列印迴圈佇列中的資料

void

showqueue

(queue *q)

printf

("\n");

}//出隊操作

void

dequeue

(queue *q)

//獲取隊頭元素

void

gethdad

(queue *q, elemtype *v)

//獲取佇列長度(元素個數)

intlength

(queue *q)

//清空佇列

void

clearqueue

(queue *q)

//銷毀佇列

void

destroyqueue

(queue *q)

main.cpp

#include

"seqqueue.h"

void

main()

showqueue

(&q)

;dequeue

(&q)

;enqueue

(&q,10)

;dequeue

(&q)

;enqueue

(&q,20)

;showqueue

(&q)

;printf

("%d\n"

,length

(&q));

}

佇列之順序佇列詳解(C語言版)

首先我們來看看什麼是佇列?佇列是一種先進先出 fifo 的線性表,它只允許在表的一端進行插入,而在另一端刪除元素。這和我們日常生活中的排隊是一致的,最早進入佇列的元素最早離開。佇列的結構圖如下所示 明白了佇列之後,順序佇列就非常簡單了,用順序儲存結構表示的佇列就簡稱為順序佇列。和順序棧相類似,在佇列...

迴圈佇列的實現(C語言版)

執行環境 vs2015 include include include 定義 typedef int elemtype typedef int status 定義常量的值 define ok 1 define error 0 define true 1 define false 0 define o...

迴圈佇列的儲存設計實現(C語言版)

1.概念 為充分利用向量空間,克服順序儲存結構的 假溢位 現象的方法是 將向量空間想象為乙個首尾相接的圓環,並稱這種向量為迴圈向量。儲存在其中的佇列稱為迴圈佇列 circular queue 這種迴圈佇列可以以單鏈表的方式來在實際程式設計應用中來實現。迴圈佇列中,由於入隊時尾指標向前追趕頭指標 出隊...