問題描述:
用帶頭循環鏈表表示隊列(設隊列長度為N)
若只設 頭 指針,則出隊列和入隊列的時間復雜度分別是多少?
若只設 尾 指針,則出隊列和入隊列的時間復雜度分別是多少?
我的答案:
若只設 頭 指針,則出隊列O(1);入隊列O(N)
若只設 尾 指針,則出隊列O(1);入隊列O(1)
對嗎?
解析:
前提:隊列中的結點從隊尾插入,從隊頭刪除;隊列中的結點的指向是從隊頭指向隊尾,因為是循環鏈表,則隊尾結點的下壹個結點是隊頭。
如果只設頭指針,則出列容易,頭指針往後移壹個就行;入列則要遍歷整個隊列,確定隊尾後再插入,所以出列是O(1),入列是O(n)
如果只設尾指針,則入列時直接插入,出列只須後移壹個結點即可找到隊頭結點,都是常數級的時間耗費,即都是O(1)
壹般來說循環隊列不用設頭指針,只需壹個指向尾結點的指針就行了,確定頭和尾都很容易。