我的「mothertongue」是Java,我需要用C編寫一個用於教育目的的項目。我嘗試瞭解queue.h
庫。在Java中默認你add()
一個項目到List
的末尾,但是在queue.h
中只有LIST_INSERT_HEAD
宏不接受其他成員。事實上,一個小測試表明它插入到HEAD中(當穿過LIST_FOREACH
它從最後插入的元素到第一個)。那麼,這不應該被稱爲FILO隊列(這意味着一個堆棧)?爲什麼BSD queue.h LIST調用列表?
0
A
回答
1
列表對應於List ADT:「一個有序的值序列,其中相同的值可能會出現多次「。
queue.h中的LIST也是一個List ADT,您可以在其中看到實現細節(它是作爲雙向鏈表實現的)。它是LIFO,正如queue.h文件所述(雖然頗爲模糊)。是的,一種實現Stack ADT的方法是using a linked list。
1
你應該錯過別人,INSERT_TAIL必須存在。請做一個查找並確認。
它既有的功能,列表和隊列:)
可能是下面的,不是一個,你正在尋找,反正 在Java中http://bxr.su/o/queue.h
0
queue.h
提供了一些隊列選項。由於這一切都是由預處理器完成的,並且還要注意,在每個BSD系統上文件的完整路徑是src/sys/sys/queue.h
,這意味着它在內核中用於內部結構的頻繁使用,每個變體都經過高度優化提高效率並降低內存佔用。 (讓每個BSD系統可以在這裏稍微不同的選擇)
在OpenBSD,似乎有一對夫婦的選擇了隊列選擇:
- http://bxr.su/o/queue.h#SLIST_HEAD
- http://bxr.su/o/queue.h#LIST_HEAD
- http://bxr.su/o/queue.h#SIMPLEQ_HEAD
- http://bxr.su/o/queue.h#XSIMPLEQ_HEAD *
- http://bxr.su/o/queue.h#TAILQ_HEAD
- http://bxr.su/o/queue.h#CIRCLEQ_HEAD *
*無論哪個原因,看來,目前只有4從6個選項中manual page被正式記錄在案。 請參閱:http://bxr.su/o/share/man/man3/queue.3
如果你想能夠INSERT_TAIL
到隊列/列表,你還是有很多選擇從這裏選擇 - SIMPLEQ
,XSIMPLEQ
,TAILQ
和CIRCLEQ
。
所以,摘要:有沒有法律規定說,通過名稱LIST
隊列/列表實現必須允許尾部着!
相關問題
- 1. 如何使用sys/queue.h中的列表?
- 2. 爲什麼Nil :: Nil會返回List(List())?
- 3. 爲什麼* list ++或*(list ++)爲列表[4]工作,但對指定列表值的指針工作正常?
- 4. 爲什麼session.createCriteria(classtype).list()比列表返回更多的對象?
- 5. 爲什麼這個List插入一個嵌套列表?
- 6. 爲什麼sys/queue.h中的雙鏈表保持上一個元素的地址?
- 7. sys/queue.h:使用LIST_REMOVE
- 8. 爲什麼在iterable上調用list()會改變它?
- 9. 爲什麼我不能在擴展List的類中調用OrderBy?
- 10. 爲什麼C++ std :: list :: clear()不調用析構函數?
- 11. Html Select List:爲什麼onchange會被調用兩次?
- 12. 爲什麼使用BSD和Perlversion 5.12.0 - 5.12.2加載測試失敗?
- 13. 爲什麼scala將Seq轉換爲List?
- 14. 哪裏可以找到Linux版本的sys/queue.h頭文件?
- 15. 爲什麼我的代碼使用List包中的monadic列表太慢?
- 16. 爲什麼使用cons()和list()創建的列表顯示不同?
- 17. 爲什麼列表爲空?
- 18. List(Int32)爲什麼將JSON序列化爲ArrayList?
- 19. 多態性:爲什麼使用「List list = new ArrayList」而不是「ArrayList list = new ArrayList」?
- 20. javascript中調用{}的列表是什麼?
- 21. 爲什麼我的List在函數調用中分配後爲空?
- 22. 爲什麼List(_ *)在Scala匹配表達式中無法匹配List(4,18,52)?
- 23. 爲什麼`list :: iterator + 1`沒有工作?
- 24. 爲什麼只有std :: list :: sort()?
- 25. 爲什麼不一些(List(1,2,3))。flatten compile?
- 26. 爲什麼list(),dict()和tuple()比[],{}和()慢?
- 27. 爲什麼Scala List沒有訂購?
- 28. 爲什麼list :: element給出錯誤?
- 29. 爲什麼命名List'1.cs
- 30. Scala:爲什麼List [=> Int]不工作?
有'TAILQ'宏具有'INSERT_TAIL'。但是List中沒有這樣的方法,所以對我來說很奇怪。 –
是的,它的設計選擇,添加尾巴,你必須使用TAILQ,否則LIST是好的。請不要混淆Java LinkedList。 – Karthikeyan