DS部落格作業02 棧和佇列

2022-06-03 04:27:07 字數 3276 閱讀 3843

棧的應用

佇列的儲存結構及操作

佇列的應用

編譯錯誤:這題我是在vs除錯能執行後才提交到pta的,編譯錯誤是因為pta預設編譯語言是c,而我用的是c++。

答案正確:這裡就說一下我在vs除錯過程中遇到的問題吧。

1.初始化迴圈佇列的時候一直在糾結要不要讓front指向第乙個節點的前乙個位置,也就是多設乙個空節點,加上對佇列還是不夠熟悉,導致要麼漏插乙個元素,要麼棧溢位,還有就是front和rare指標的移動忘記考慮其範圍,導致迴圈佇列溢位。於是便去再次了解一下迴圈佇列及其結構特點後解決問題。

2.在報數出列過程中,忘記判斷當前位置是否還有人,即當前位置的元素是否為-1,導致輸出出錯,且迴圈報數。在報數過程中加上兩條while語句分別對報數前和報數後所在位置元素進行判斷後解決問題。

編譯錯誤1-2、執行超時:一開始毫無頭緒,於是便想看一下題目的測試點有什麼,就隨便寫了幾行**。

部分正確3-7:當我寫完程式的大體功能後,題目所給樣例測試點也過了,但提交卻還有兩個測試點過不了:`視窗有完全空閒一段時間,等待下一位`:這個測試點過不了是因為我在這種情況下修改視窗空閒時間為使用者到達時間後忘記加上使用者所辦理的時間;`剛好朋友處理完自己的事務,不用等待就夾塞;到達時朋友已經走了,只好排隊`:這個測試點過不了是以為在排序夾塞後的佇列時,忘記判斷使用者的朋友在使用者辦理完成之前是否已經到達。

部分正確8:修改了上訴錯誤後,發現`剛好朋友處理完自己的事務,不用等待就夾塞;到達時朋友已經走了,只好排隊`這個測試點還是過不了,經檢查後發現,來的時候剛好朋友處理完自己的事物的那條判斷語句應該用`peolist[j].come <= nowtime`,而我原本是只有小於號。

答案正確9-11:修改完上述錯誤後,所有測試點都通過了。

#include #include #include #include using namespace std;

int main()

for(int i = 0; i < outstr.size(); i++)//設定出棧序列

int i = 0, j = 0;

for(; i < total; i++)

} if(i == j)

else

return 0;

}

輸入元素個數total;

輸入入棧順序instr;

輸入出棧順序outstr;

vectorvin,vout;

for(遍歷instr) 將instr中的元素入棧到vin中;

for(遍歷outstr) 將outstr中的元素入棧到vout中;

int i=j=0;

stacks;

for(i=0 to total-1)

vin[i]入棧到s中;

while(s不為空&&s棧頂元素==vout[j]) s.pop(), j++;

end for

if(i==j) 出棧序列合法;

else 出棧序列不合法;

#include#include#include#includeusing namespace std;   

float oper(float f1,float f2, char op)

int main()

s.push(oper(t1,t2,prefixexp[i]));

// printf("%f\n",s.top());

i--;//下一位肯定是空格

} else //運算數

//printf("atof:%f\n",atof(digitstr.c_str()));

s.push(atof(digitstr.c_str()));

}

} if(s.size()==1)

printf("%0.1f\n",s.top());

else

printf("error\n");

return 0;

}

stacks;

輸入字首表示式prefixexp;

for(從後往前遍歷字首表示式)

if(運算子)

裡棧頂最近的兩個運算元出棧t1,t2;

if(運算子是除號並且除數為0) error!;

將運算結果「t1運算子t2」入棧到s中;

i--;

else //運算元

while(i>=0&&當前字元不是空格)

將當前數字字元轉換為整型型別的數字,i--;

end while

將轉換成整型的運算元入棧;

end for

if(棧內只剩乙個元素) 保留一位小數後輸出棧頂元素;

else 表示式有誤! 輸出error!

DS部落格作業02 棧和佇列

佇列定義 1 佇列 queue 是只允許在一端進行插入操作,而在另一端進行刪除操作的線性表。2 與棧相反,佇列是一種先進先出的線性表.3 實現乙個佇列同樣需要順序表或鍊錶作為基礎。佇列的鏈式儲存結構 佇列即可用鍊錶實現,也可以用順序表實現,而棧一般用順序表實現,佇列用鍊錶實現,簡稱鏈佇列 typed...

DS部落格作業02 棧和佇列

這個作業屬於哪個班級 資料結構 網路2011 2012 這個作業的位址 ds部落格作業02 棧和佇列 這個作業的目標 學習棧和佇列的結構設計及運算操作 姓名 李雷默 順序表 底層實現是陣列 和棧結構的儲存資料的方式高度相似,只不過棧對資料的訪問過程有特殊的限制,而順序表沒有。鍊錶的頭部作為棧頂,意味...

DS部落格作業03 棧和佇列

在createstack函式中為結構體和陣列分配好記憶體,push函式先判斷堆疊是否滿,然後根據tag對相應堆疊進行輸入 pop函式先根據tag判斷對那個堆疊操作,然後再進行判斷是否為空,不空就出棧。q1 輸出搞錯了,滿是沒有輸出tag沒有輸出 q2 沒賦值直接用mystack maxsize 假設...