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

2021-07-05 21:32:29 字數 1236 閱讀 2127

問題及**:

此程式呼叫了環形佇列演算法庫(sqqueue.cpp和sqqueue.h)。

/*

*檔名稱:test.cpp

*作 者:徐群壯

*完成日期:2015.10.15

*版 本 號:v1.0

* *問題描述:設從鍵盤輸入一整數序列a1,a2,…an,試程式設計實現:當ai>0時,ai進隊,

當ai<0時,將隊首元素出隊,當ai=0時,表示輸入結束。要求將佇列處理成環形佇列,

使用演算法庫中定義的資料型別及演算法,程式中只包括乙個函式(main函式),入隊和

出隊等操作直接寫在main函式中即可。當進隊出隊異常(如隊滿)時,要列印出錯資訊。

並且在最後輸出佇列資訊。

*輸入描述:

*程式輸出:

*/#include #include #include "sqqueue.h"

using namespace std;

void printfqueue(sqqueue *q)

}int main()

{ elemtype a,x;

sqqueue *qu;

initqueue(qu);

while(1)

{cout

if(a>0)

{if(!enqueue(qu,a))

cout<

執行結果:

知識點總結及學習心得:

⒈在一開始直接呼叫演算法庫的時候會出現亂碼,原因是我們在主程式中的判斷依據是看輸入數的正負,當初編寫sqqueue的演算法庫的時候。設定了elemtype為char型別。所以在具體的實踐過程中。要根據實際情況修改演算法庫中的資料。

⒉在當初寫演算法庫的時候。設定的maxsize為5.根據程式可以看出。我們實際存入的只有4(maxsize)個元素。這是因為我們在當初區分隊滿和隊空的時候,約定在進隊時少用乙個資料元素空間。所以佇列中始終乙個空元素不用。這點是我們在程式設計中所需要注意的。

⒊在定義輸出隊元素的函式的時候。一開始我並沒有在此函式中定義與q指標相同的temp指標。但是後來我發現。如果不用temp指標(記錄下q的位置),在迴圈結束後原先的front指標和rear所指向的內容已經變化。如果此程式後面沒有操作還好說、萬一又有進隊或者出隊的操作就錯了。所以我在這定義了temp指標,記錄q。

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

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

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

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

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

問題及 檔名稱 第7周專案3 負數把正數趕出佇列.cpp 作 者 魏永恆 完成日期 2015年10月23日 版 本 號 v1.0 問題描述 設從鍵盤輸入一整數序列a1,a2,an,試程式設計實現 當ai 0時,ai進隊,當ai 0時,將隊首元素出隊,當ai 0時,表示輸入結束。要求將佇列處理成環形佇...