迴圈佇列的建立及基本操作 資料結構 C語言

2021-10-05 04:16:44 字數 1653 閱讀 1782

一、實驗目的

1.掌握佇列儲存結構的表示和實現方法。

2.掌握佇列的入隊和出隊等基本操作的演算法實現。

二、實驗題

建立順序迴圈佇列,並在順序迴圈佇列上實現入隊、出隊基本操作。

三、實驗過程及結果

基本思路

建立順序迴圈佇列:

定義乙個結構體,成員有三個:陣列、頭指標(用來表示陣列的下標,用於刪除元素,即出隊)、尾指標(用來表示陣列的下標,用於插入元素,即入隊)。

入隊:需要判斷佇列是否滿了,若不滿,則可入隊。

出隊:需要判斷佇列是否為空

思路:迴圈佇列的引入:解決佇列是假溢位的問題

建立乙個順序佇列,當rear+1=maxqsize時,front有兩種情況:

(1) front=0

此時是佇列真溢位,即佇列已滿;

(2) front不等於0

此時佇列是假溢位;

解決方法:

引入迴圈佇列,當rear+1=maxqsize時,rear指向陣列下標為零的位置,再次利用沒有元素的空間,front同理;

由rear+1變為rear=0的方法:

取模運算:(rear+1)%maxqsize;

判斷迴圈佇列空和滿的條件問題:

(1) 另設乙個標誌元素,以區分隊空,隊滿;

(2) 另設乙個變數,記錄元素個數;

(3)少用乙個元素空間;

解決方案(3)的實現:

全部程式**:

#include

#include

#define ok

1#define error

0#define maxqsize

100#define overflow

0typedef int qelemtype;

typedef int status;

typedef struct

sqqueue;

sqqueue q

;//迴圈佇列的初始化

status initqueue

(sqqueue &q)

//求佇列的長度

int queuelength

(sqqueue q

)//入隊

status enqueue

(sqqueue &

q,int n)

returnok;

}//出隊

status dequeue

(sqqueue &

q,int n)

returnok;

}//取隊頭元素

qelemtype gethead

(sqqueue q

)//主函式測試

int main()

實驗結果:

MySQL基本操作 資料操作

刪除資料 更新字段 1.插入指定字段值 insert into 表名 字段列表 values 對應字段值列表 2.向表中所有字段插入資料 insert into 表名 values 按表結構寫對應資料 insert into my teacher values liwei 20 1.查詢表中全部資料...

單鏈表基本操作 資料結構

鍊錶是一種物理儲存結構上非連續 非順序的資料儲存結構,資料元素的邏輯順序是通過鍊錶中的指標鏈結次序來形成的。單鏈表分為兩種 帶頭節點和不帶頭結點。在這裡,主要介紹不帶頭結點的單鏈表的基本操作。標頭檔案 slist.h typedef int sdatatype typedef struct slis...

Mariadb使用者操作 資料庫基本操作 一

第一部分建立資料庫 1.1 建立並切換操作的資料庫 建立資料庫create database 資料庫名 切換 use 資料庫名 建立資料庫 mariadb mysql create database study db 切換資料庫 mariadb mysql use study db database...