佇列元素按fifo的方式處理——最先進入的元素最先離開
佇列是儲存重複編碼k值的一種有效結構。
實現模擬時常用佇列來表示等待的一列教材實現方法:首先建立customer類,記錄了顧客到達的時間及買完票後離開的時間,離開時間減去到達時間就是顧客買票所花費總時間,然後ticketcounter模擬這個場景,外層迴圈判斷每次迴圈是有多少位售票員在工作,對於每一次模擬從佇列中一次得到以為顧客並有一位售票員接待,記錄下花費的總時間,在每次處理的最後,計算平均時間。
佇列的鏈式實現方式便於找到指向鍊錶的第乙個和最後乙個元素的引用。入隊操作(enqueue),將新元素放到表尾,表明要將當前最後乙個元素的next引用指向新元素,並且rear引用重置為新的最後元素。但如果當前隊列為空,front引用也必須指向新的(唯一的)元素。入隊和出隊操作都在集合的兩端進行。
出隊操作(dequeue) ,如果佇列中至少有乙個元素。則返回鍊錶中的首元素,然後修改front引用。當佇列中只有乙個元素時,當刪除最前面的元素後,隊列為空,則rear引用必須置為null。
first操作,返回指向佇列頭(front端)元素的引用。
因為佇列操作修改集合的兩端,所以將一端固定在下標為0的位置就會讓元素移動。基於陣列的佇列實現策略是,將佇列的一端固定在陣列下標為0的地方。元素連續地儲存在陣列中。整數變數rear用來指示陣列中的下乙個空單元,它還同時代表佇列的元素個數。非迴圈陣列實現佇列時元素的移動得到o(n)階複雜度。
採用陣列實現佇列時,把陣列看成乙個環,可以避免移動元素。
入隊操作(enqueue),一般情況下,乙個元素入隊後,rear的值加1,但當入隊操作填充的是陣列的最後乙個單元時(最大下標處),rear的值必須重置為0。
出隊操作(dequeue) ,元素出隊後,front的值加1。多個出隊操作後,front將達到陣列的最大下標處。刪除最大下標處的元素後,front的值必須重置為0,而不是加1。
(statistics.sh指令碼的執行結果截圖)
暫未訂正
由於第5周的作業是和第6周一起做的,所以感悟還是和第五周一樣。劉老師說的話很關鍵,乙個**看懂了和會寫是完全兩個概念,而且這週的學習內容就有讓我們補全書上的**作業。雖然不是特別難,但還是考察了能力。希望同學們能夠真正提高**能力,不要再讓老師們多費心去檢查了。
**行數(新增/累積)
部落格量(新增/累積)
學習時間(新增/累積)
重要成長
目標5000行
400小時
第一周188
1/125
演算法分析
第二週70/258
1/215/40
《構建之法》7-9章
第三週474/732
1/320/60
查詢和排序
第四五六周
1313/2045
5/812/72
棧和佇列
第七周(有空多看看現代軟體工程 課件 軟體工程師能力自我評價表)
20162320劉先潤大二第7周學習總結
一.樹 樹是非線性結構,其中的元素組織為乙個結構層次。而之前的集合 棧 佇列及鍊錶 都是線性資料結構,即他們的元素可以乙個接乙個排列。樹 tree 是有一組邊 edge 夠構成,結點用來儲存元素,邊表示結點之間的連線。如下圖所示,書中較低一層的結點稱為其前一層結點的子節點 children 乙個結點...
20162320劉先潤大二第3周學習總結
線性查詢,從一端開始以線性的方式掃瞄找池。下圖是我繪製的乙個說明圖 二分查詢,借助查詢池中資料的有序性,每次從中間開始查詢,即每次比較都會將物件的範圍縮小一倍,排除了一半的可行候選資料。選擇排序 反覆地將乙個個具體的值放到它最終的有序位置,從而完成一組值的排序。我的理解 每一次從將要排序的資料中選出...
20162320劉先潤第5周學習總結
statistics.sh指令碼的執行結果截圖 上週部落格互評情況 關於課程程式學習的經驗感悟 1.要理解教材上的程式,一定要掌握單詞的意思。比如程式5.11中reciprocal,denominator,我第一次學習時直接忽略了這個單詞意思跳躍學習,結果花了很多時間都看不懂,終於去查了字典,其意思...