DS部落格作業03 棧和佇列

2022-05-16 20:18:30 字數 1470 閱讀 9855

本週學習的棧和佇列,對我來說難點在於棧和佇列的輸出輸入中的棧空和隊空判斷,容易不小心把兩個寫混。在程式設計時,選擇用棧的順序儲存結構空間利用率高,而用鏈式儲存結構可以不用擔心空間的不足或浪費,二者各有優勢,但目前我用順序儲存結構更多。學了棧和佇列,許多問題的解決變得方便了許多,比如括號問題的求解,表示式的轉換和求值,函式呼叫和遞迴實現還有迷宮問題。熟練掌握棧和佇列的操作對我們來說十分重要。

先令字串中下標為0到下標為mid的字元入棧,mid=strlen(str)/2-1。然後從mid+1開始到歷遍字串(若為字串為奇數個,則mid再加1,跳過中間那個數),同時和出棧元素對比,若有不同,則不是對稱字元,返回0。

先將line中的字元依次入棧,再輸出棧中元素個數與棧頂元素。出棧時要判斷佇列是否已滿,棧是否為空。然後當棧頂不等於x時,輸出棧頂字元入佇列。輸出佇列元素個數,隊頭與隊尾,以及佇列中所有元素。

1.判斷佇列是否為空的函式寫錯了但一直沒看出來,導致後面的輸出一直有問題。

2.沒把題目給的輸出函式中的引數e用上,沒弄明白要怎麼寫這個函式

1.要把隊空條件和棧空條件記牢了,別寫混了。

2.寫完一行**就注意回頭檢查一下,否則容易寫錯,後面很難檢查出來。

1.提交後剛開始系統給的錯誤是段錯誤,發現是棧滿條件寫錯了,改成top1==top2-1。

2.後來錯誤變成輸出超限,改了半天實在改不出來,回去一看,發現是return寫錯了地方。

1.別再搞錯棧滿條件了。

2.要記清楚自己的思路,別寫著寫著就忘了,把return寫錯地方了。

DS部落格作業03 棧和佇列

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

DS部落格作業03 棧和佇列

本週學習的內容是棧和佇列,相比前一單元的順序表內容,容易了很多,操作上更加簡便。順序表包括順序表和煉表兩塊大內容,順序表的操作主要有建立順序表,查詢順序表中的元素,順序表元素的插入和刪除。鍊錶的主要操作有頭插法建表和尾插法建表,鍊錶的遍歷查詢,有序鍊錶的插入和刪除以及兩個有序鍊錶的合併。而本單元的棧...

DS部落格作業03 棧和佇列

6 3是否合法出入棧操作 1.初始化乙個字串和棧 字串用於存需要判斷的括號,棧用於匹配 2.將字串和棧作為形參傳入函式 3.進入函式,遍歷字串,所有屬於右邊括號的都進棧。遍歷到右括號的時候,用e訪問棧頂,並棧頂元素匹配,如果匹配成功flag 1 並且把棧頂出棧,方便進行下一符號匹配 如果匹配不成功就...