實驗五佇列的定義及基本操作

2022-12-27 22:15:05 字數 1815 閱讀 8572

班級:通訊五班12083415 學號:12081501 姓名:韓寧

一、 實驗內容

1)編寫乙個程式,實現鏈隊的各種基本運算(假設佇列中元素型別為char),並在此基礎上設計乙個程式,完成如下功能:

(1)初始化鏈隊q;

(2)判斷鏈隊q是否非空;

(3)依次進隊元素a,b,c;

(4)出隊乙個元素,並輸出該元素;

(5)輸出鏈隊q的元素個數;

(6)依次進鏈隊元素d,e,f;

(7)輸出鏈隊q的元素個數;

(8)輸出出隊序列;

(9)釋放鏈隊。

2)設陣列qu[0 ,mo-1] 中存放迴圈佇列的元素。編寫能向該迴圈佇列插入乙個結點資料和刪除乙個結點資料的程式。

[實驗說明]

(1) 佇列的特點是在隊尾入隊, 在隊首出隊。 在迴圈佇列中, 最初隊列為空時隊首指標 front和隊尾指標 rear都指向同一位置,當有元素入隊時,由於是迴圈的,所以 rear位置前移,即:qu.

rear = (qu. rear + 1) % mo

將插入元素放到 rear的新位置上。

(2)當有元素出隊時,先將front前移乙個位置,即:

qu. front = (qu. front + 1) % mo

將 front新位置的元素取出即可。

二、 實驗目的

1)熟練掌握佇列的特點;

2)掌握對佇列的定義和基本操作,熟練掌握鏈式佇列的操作及應用,掌握環形佇列的入隊和出隊等基本操作;

3)加深對佇列結構的理解,逐步培養解決實際問題的程式設計能力。

三、 程式源**

1)#include <>

#include <>

#include<>

typedef char elemtype;

typedef struct qnode

qnode;

typedef struct

liqueue;

//初始化佇列

void initqueue(liqueue *&q)

//銷毀佇列

void destroyqueue(liqueue *&q)

}free(p);

free(q);

}//(3)判斷佇列是否為空

bool queueempty(liqueue *q)

//進佇列

void enqueue(liqueue *&q,elemtype e)

}//出佇列

bool dequeue(liqueue *&q,elemtype &e)

int queuelength(liqueue *q) //輸出鏈隊的元素個數

return(n);

}void main()

printf("\n");

printf("(9)釋放鏈隊");

destroyqueue(q);

printf("\n");}2)

#include <>

#include <>

typedef int elemtype;

struct queue;

void initqueue(queue &q)

bool emptyqueue(queue q)

void enqueue(queue &q,elemtype item)

}}elemtype outqueue(queue &q)

return }

void clearqueue(queue &q)

void main()

四、 除錯及測試資料

1)2)

五、 實驗總結

實驗四佇列的實現及應用

datatype queuefront cirqueue q 訪問隊頭元素 void dancepartners datatype dancers,int num 舞伴配對函式 printf 配對情況如下 n while queueempty femaledancer queueempty male...

資料結構 04佇列的基本操作

院系光電與資訊工程學院專業電子資訊工程 姓名學號 2011級 2班 2013年4月20日 1 編寫鏈結佇列的基本操作函式,呼叫上述函式實現下列操作,操作步驟如下 呼叫進隊函式建立乙個佇列。呼叫進隊函式建立乙個佇列。讀取佇列中的第乙個元素。從佇列中刪除元素。輸出佇列中的所有元素。鏈結佇列 進隊操作 e...

實驗4佇列子系統

1.實驗目的 1 掌握佇列的特點及其描述方法 2 用鏈式結構實現乙個佇列 3 掌握佇列的各種基本操作 4 掌握佇列的簡單應用程式。2.實驗內容 1 設計乙個字元型的鏈佇列 2 編寫佇列的進隊 出隊 讀隊頭元素 顯示佇列中全部元素的程式 3 設計乙個選擇式選單,以選單方式選擇佇列的各種基本操作。參考程...