contributed by < yicheng11
>
q_new:建立一個新的空 queue
q_free:把 queue 整個清除掉
q_insert_head:在 queue 的 head 新增新的元素
q_insert_tail:在 queue 的 tail 新增新的元素
q_remove_head:移除在 queue 的 head 的元素
q_size:計算 queue 中有多少元素
q_reverse:把 queue 反轉
其中 q_insert_tail 與 q_size 的時間複雜度要求為
為了使 q_size 與 q_insert_tail 的時間複雜度為 ,利用 size 紀錄 queue 的大小,還有使用一指標指向 queue 的尾端
要考慮到 malloc 失敗的情況
循序 free value 再 free list_ele_t,時間複雜度是
這邊使用 strncpy() 取代 strcpy() 防止 buffer overflow
因為在 queue_t 有以 size 紀錄 queue 的大小,所以可以直接回傳,時間複雜度是
把 queue 裡面的元素反轉