資料結構(四)

2021-03-31 20:55:34 字數 1553 閱讀 2907

同學說我更新得太慢了。是啊,隔了好久才更新一次。其實我也想快點的更新,更新得越快同時也說明我掌握知識的速度越快,越多。但是工作不允許啊。每天早出晚歸,空閒的實現還要分配一點給外語。不過,以後我會努力的,只要有朋友的支援,我會把我的所學和經驗奉獻給大家。有點開源的精神吧。呵呵,當然了,我還沒有哪個資格。

記得,在學校的時候,不論是在課本上,試卷上,還是老師課堂提問。總會不自覺的把棧和佇列聯絡在一起。這充分的說明了棧和佇列存在著相似性,同時又有區別。在資料結構(三)中,提到了棧。它是乙個後入先出的容器,那麼佇列又是什麼呢?我想,你一定猜到了,佇列是先入先出

(fifo)

的容器。你看,棧和佇列的異同都放在你的面前了。

線性佇列和迴圈佇列,是我們者經常使用到兩種佇列。在兩種佇列中,資料項都是在佇列尾插入,然後移向佇列頭,並從佇列頭刪除或獲取。

為了有助於記憶,我們仍然舉乙個實際中的例子來說明。給你半分鐘想想,什麼例子更形象?呵呵!印表機作業,你覺得這個例子怎麼樣?印表機大家都用過,也知道

它的速度比計算機慢許多,所以作業系統將其列印任務分派給其列印子系統,列印子系統就會將這些任務插入到乙個列印佇列中。佇列中的第乙個任務先列印,最後乙個任務最後列印。怎麼樣夠形象吧!

這裡以一迴圈隊列為例子。

#include "list.h"

#include "array.h"

template

class queue

;陣列實現方法:

template

class queuearray:public queue

~queuearray()

}t &head() const

return (*parray)[nhead];

}void enqueue(t &value)

if(++ntail == nlength)

else

(*parray)[ntail] = value;

++ntail;

++ncount;

}t &dequeue()

t tresult = (*parray)[nhead];

if(nhead == nlength)

else

--ncount;

return tresult;

}private:

array*parray;

int nhead;

int ntail;

};鍊錶實現方法:

template

class queuelist:public queue

~queuelist()

}t &head() const

return const_cast(plist->gethead()->getdatum());

}t &dequeue()

t truselt = plist->gethead()->getdatum();

plist->delelement(1);

--ncount;

return truselt;

}private:

linkedlist*plist;

};

資料結構 四

list.h檔案 ifndef list h define list h typedef enumbool typedef int data typedef struct node node typedef struct list list 建立鍊錶 list createlist 銷毀鍊錶 voi...

資料結構(四)

1.鍊錶是什麼玩意?有單向鍊錶和雙向鍊錶之分 定義 物理上非連續 非順序,由若干節點所組成 單向鍊錶 單向鍊錶的乙個節點由2部分組成,資料域 data 指標域 next 資料域存放資料,指標域存放指向下乙個節點的指標 頭節點 鍊錶的第乙個節點 尾節點 鍊錶的最後乙個節點,next指標指向為null ...

資料結構實驗四

一 實驗目的 鞏固字串和多維陣列相關知識,學會運用靈活應用。1.回顧字串和多維陣列的邏輯結構和儲存操作特點,字元和陣列的物理儲存結構和常見操作。2.學習運用字串和和陣列的知識來解決實際問題。3.進一步鞏固程式除錯方法。4.進一步鞏固模板程式設計。二 實驗內容 1.從鍵盤輸入一些文字,統計文字單詞的個...