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

2022-08-21 05:48:08 字數 3478 閱讀 4527

院系光電與資訊工程學院專業電子資訊工程

姓名學號**

2011級 2班 2023年4月20日

(1)編寫鏈結佇列的基本操作函式,呼叫上述函式實現下列操作,操作步驟如下:呼叫進隊函式建立乙個佇列。

呼叫進隊函式建立乙個佇列。

讀取佇列中的第乙個元素。

從佇列中刪除元素。

輸出佇列中的所有元素。

鏈結佇列:

①進隊操作 enqueue(linkqueue *q, qelemtype e)

②出隊操作,隊空 dequeue(linkqueue *q, qelemtype *e)

③輸出佇列中元素 0utputqueue(linkqueue q)

環型佇列:

①進隊操作,返回1為隊滿 enqueue(sqqueue *q, qelemtype e)

②出隊操作,返回1為隊空 dequeue(sqqueue *q, qelemtype *e)

③輸出佇列中元素 outputqmeue(sqqueue q)

輸入形式:整型數。

(1)鏈結佇列

adt qnode

結構關係:r=

基本操作:

initqueue(linkqueue *q)

操作前提:q是乙個未初始化的鏈結佇列

操作結果:將q初始化為乙個空的鏈結佇列

enqueue(linkqueue *q, qelemtype e)

操作前提:鏈結佇列q已存在

操作結果:將元素e插入到鏈結佇列中

dequeue(linkqueue *q, qelemtype *e)

操作前提:鏈結佇列q已存在

操作結果:將鏈結佇列q中隊頭元素刪除,刪除的元素值通過e返回

0utputqueue(linkqueue q)

操作前提:鏈結佇列q已存在

操作結果:將鏈結佇列q中的元素顯示到螢幕上

} 本程式包含5個函式:

主函式main()

初始化鏈結佇列函式 initqueue()

進隊函式enqueue()

出隊函式dequeue()

輸出佇列中元素函式 outputstack()

各函式呼叫關係:主函式main呼叫其他四個函式

主函式的偽碼

main()

結構關係:r=

基本操作:

initqueue(sqqueue &q)

操作前提:q是乙個未初始化的環型佇列

操作結果:將q初始化為乙個空的環型佇列

enqueue(sqqueue *q,int e)

操作前提:環型佇列q已存在

操作結果:將元素e插入到佇列中

dequeue(sqqueue *q,int *e)

操作前提:環型佇列q已存在

操作結果:將環型佇列q中隊頭元素刪除,刪除的元素值通過e返回

outputqmeue(sqqueue *q)

操作前提:環型佇列q已存在

操作結果:將環型佇列q中的元素顯示到螢幕上}

本程式包含5個函式:

主函式main()

初始化鏈結佇列函式 initqueue()

進隊函式enqueue()

出隊函式dequeue()

輸出佇列中元素函式 outputstack()

各函式呼叫關係:主函式main呼叫其他四個函式

函式的偽碼

main()

{ 定義sqqueue 變數sq;

定義整型變數n,i,m;

構造空的環型佇列;

輸入佇列的長度;

for迴圈(i=1;i<=n;i++)

{呼叫enqueue函式;}

輸出佇列元素;

刪除對頭元素;

輸出佇列元素;

}(1)鏈結佇列

(1) 型別定義

typedef struct qnodeqnode,*queueptr;

typedef struct linkqueue;

基本操作的偽碼演算法

(1)初始化

void initqueue(linkqueue *q)

(2)進隊

void push(sqstack &s,int e)

q->rear->next=p;

q->rear=p;

}(3)出隊

int pop(sqstack *s,int e)

{定義queueptr變數 p;

如果隊空則返回0;

p=q->front->next;

*e=p->data;

q->front->next=p->next;

如果q->rear==p則q->rear=q->front;;

釋放p的空間;

返回1;

}(4)輸出元素

int outputqueue(linkqueue q)

printf("\n");

返回1;

}(2)環形佇列

型別定義

typedef structsqqueue;

基本操作的偽碼演算法

(1)初始化

void initqueue(sqqueue &q)

(4)輸出元素

void outputqmeue(sqqueue *q)

換行;}

鏈結佇列:除錯是出現錯誤,經過檢查發現在某些地方分號用中文表示,出現空指標問題。

環型佇列:出現空指標問題,記憶體不能讀取等

(1)鏈結佇列:

程式執行過程如下:

提示使用者輸入元素個數;

使用者按要求輸入乙個整型數;

程式輸出構造好的鏈結佇列;

呼叫出隊函式,並把剩餘元素顯示在螢幕上;

(2)環型佇列:

程式執行過程如下:

提示使用者輸入佇列元素個數;

使用者按要求輸入乙個整型數;

程式用輸入的整型數構建乙個環型佇列,並輸出佇列元素;

呼叫出棧函式,刪除棧頂,顯示棧中元素;

(1)鏈結佇列

構造乙個空的鏈結佇列後,螢幕顯示:請輸入佇列的元素個數:

輸入5後,

螢幕顯示建立的佇列元素:1 2 3 4 5

呼叫出隊函式後,螢幕顯示:2 3 4 5

(2)環形佇列

建立空佇列,程式執行後螢幕顯示:輸入佇列元素的長度

輸入5後,

螢幕顯示佇列的元素:1 2 3 4 5

接著螢幕又顯示:佇列中的第乙個元素為:1

呼叫出隊函式,然後輸入佇列中元素:2 3 4 5

資料結構(c語言版)

源程式檔案如下:

(1)鏈結佇列

#include<>

#include<>

typedef struct qnodeqnode,*queueptr;

typedef struct linkqueue;

void initqueue(linkqueue *q)

資料結構棧或佇列的基本操作

附錄 可包括源程式清單或其它說明 實驗源程式 如下 第一題 include include include define stacksize 100 typedef int stacktype typedef structseq stack seq stack creatstack else voi...

資料結構棧和佇列基本操作

實驗二棧和佇列 棧的順尋儲存操作 include stdio.h include stdlib.h define stack init size 100 define stackincrement 10 typedef struct sqstack void initstack sqstack s ...

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

班級 通訊五班12083415 學號 12081501 姓名 韓寧 一 實驗內容 1 編寫乙個程式,實現鏈隊的各種基本運算 假設佇列中元素型別為char 並在此基礎上設計乙個程式,完成如下功能 1 初始化鏈隊q 2 判斷鏈隊q是否非空 3 依次進隊元素a,b,c 4 出隊乙個元素,並輸出該元素 5 ...