contributed by < shihyuuuuuuu
>
本作業的目的主要是複習與練習 C 語言的基本技巧,包括以下幾項:
實作一個queue,並且可以支援 last-in, first-out(LIFO) 和 first-in, first-out(FIFO),
使用 singly-linked list 來完成。
要完成以下各函式:
初始化 queue 的記憶體空間與變數,並回傳指向該 queue 的指標。
當 malloc 失敗時,回傳 NULL 。
從 queue 的 head 到 tail 依序釋放每個 element 的記憶體空間。
除了釋放每個list_ele_t的空間外,也要記得釋放其所存的字串空間。
從 queue 的起始位置插入新的 element。
需特別注意無法配置空間或 queue 為 NULL 的情形。
從 queue 的最末位置插入新的 element。
需特別注意無法配置空間或 queue 為 NULL 的情形。
遇到的問題:一開始沒有把最尾端的指標設為NULL,導致測試程式找不到尾端。
原本認為 C 語言的指標如果沒有初始化 default 是 NULL ,因此沒有特別初始化。
後來在這份裡面看到:"To initialize a pointer to null or to assign the null value to an existing pointer, a null pointer constant (NULL, or any other integer constant with the value zero) may be used. static initialization also initializes pointers to their null values."
移除 queue 的第一個 element ,並將q->head指向第二個元素。
透過 queue 的其中一個變數 size 來存放當前 queue 的元素個數。
透過一個一個將 element 的指標反轉,來實現整個 queue 的反轉,
並且不需配置或釋放任何空間
上面程式碼有修改過, 下為原本的程式碼。
主要修改為重新命名冗餘的變數名 ,以及將不必要的 if 去掉。
qtest
的行為與技巧