第7周 專案3 負數把正數趕出佇列

2021-08-09 12:48:15 字數 1744 閱讀 3110

專案要求:

設從鍵盤輸入一整數序列a1,a2,…an,試程式設計實現:當ai>0時,ai進隊,當ai<0時,將隊首元素出隊,當ai=0時,表示輸入結束。要求將佇列處理成環形佇列,使用演算法庫中定義的資料型別及演算法,程式中只包括乙個函式(main函式),入隊和出隊等操作直接寫在main函式中即可。當進隊出隊異常(如隊滿)時,要列印出錯資訊。

專案分析:

此次程式使用環形佇列,並且在判斷要插入的元素之後,分情況進行處理。運用到進隊、出隊、判斷佇列是否為滿 等基本運算。

過程分析:

1.判斷要進隊元素正負(運用if語句)

2.如果為正

在佇列未滿的情況下   只執行進隊

如果為負

輸出首元素

實踐如下:

一、標頭檔案中進行函式宣告:

#ifndef sqqueue_h_included

#define sqqueue_h_included

#define maxsize 5

typedef char elemtype;

typedef struct

sqqueue;

void initqueue(sqqueue *&q);

//初始化順序環形佇列

void destroyqueue(sqqueue *&q);

//銷毀順序環形佇列

bool queueempty(sqqueue *q);

//判斷順序環形佇列是否為空

int queuelength(sqqueue *q);

//返回佇列中元素個數,也稱佇列長度

bool enqueue(sqqueue *&q,elemtype e);

//進隊

bool dequeue(sqqueue *&q,elemtype &e);

//出隊

#endif

// sqqueue_h_included

二、在原始檔sqqueue.cpp中定義標頭檔案中的函式:

#include #include #include "sqqueue.h"

void initqueue(sqqueue *&q) //初始化順序環形佇列

void destroyqueue(sqqueue *&q) //銷毀順序環形佇列

bool queueempty(sqqueue *q) //判斷順序環形佇列是否為空

int queuelength(sqqueue *q) //返回佇列中元素個數,也稱佇列長度

bool enqueue(sqqueue *&q,elemtype e) //進隊

bool dequeue(sqqueue *&q,elemtype &e) //出隊

三、在原始檔mian.cpp檔案中呼叫函式實現功能:

#include #include #include "sqqueue.h"

int main()

else if (a<0)

else

break;

}return 0;

}

執行結果截圖:

第7周 專案3 負數把正數趕出佇列

1.標頭檔案 sqqueue.h,包含定義順序環形佇列資料結構的 巨集定義 要實現演算法的函式的宣告 define maxsize 5 typedef int elemtype typedef struct sqqueue void initqueue sqqueue q 初始化順序環形佇列 voi...

第7周 專案3 負數把正數趕出佇列

問題及 此程式呼叫了環形佇列演算法庫 sqqueue.cpp和sqqueue.h 檔名稱 test.cpp 作 者 徐群壯 完成日期 2015.10.15 版 本 號 v1.0 問題描述 設從鍵盤輸入一整數序列a1,a2,an,試程式設計實現 當ai 0時,ai進隊,當ai 0時,將隊首元素出隊,當...

第7周專案3負數把正數趕出佇列

問題及 1 演算法庫sqqueue.h 2 main.cpp 檔名稱 專案3.cpp 完成日期 2015.10.23 問題描述 設從鍵盤輸入一整數序列a1,a2,an,試程式設計實現 當ai 0時,ai進隊,當ai 0時,將隊首元素出隊,當ai 0時,表示輸入結束。要求將佇列處理成環形佇列,使用演算...