數(shù)據(jù)結(jié)構(gòu)中的棧與隊列還是經(jīng)常使用的,棧與隊列其實就是線性表的一種應(yīng)用。因為線性隊列分為順序存儲和鏈式存儲,所以??梢苑譃殒湕:晚樞驐?,隊列也可分為順序隊列和鏈隊列。本篇博客其實就是《數(shù)據(jù)結(jié)構(gòu)之線性表的順序存儲于鏈式存儲(Swift面向?qū)ο蟀妫?/span>》這篇博客的應(yīng)用。本篇博客會分別給出隊列的順序和鏈式存儲,以及棧的順序和鏈式存儲。
說到棧和隊列這兩種數(shù)據(jù)結(jié)構(gòu),理解起來應(yīng)該不難。隊列就是進行排隊的數(shù)據(jù)結(jié)構(gòu),一個隊列肯定是線性結(jié)構(gòu)了,之所以稱之為隊列,是因為有著先入先出(FIFO ----first in first out)的特性。就像你去銀行辦業(yè)務(wù)排隊時,你先排的隊當(dāng)然是你先辦理業(yè)務(wù),那些后排隊的要在你后邊辦業(yè)務(wù)。而棧就與隊列相反了,棧具有先入后出(FILO -- first in last out)的特性。在現(xiàn)實生活中手槍的子彈夾就是棧的結(jié)構(gòu),最先進去的子彈會最后才射出。當(dāng)然在我們做iOS開發(fā)時,會經(jīng)常使用到導(dǎo)航棧,而導(dǎo)航棧中存儲的就是你之前Push進的頁面,也是先入后出的特性。關(guān)于棧和隊列,下方會給出詳細的介紹。
一、棧與隊列的綜述
棧與隊列毫無疑問都是線性結(jié)構(gòu)的,分別適用于不同的場景。博客的本部分會給出棧與隊列的總體介紹,然后分別給出其實現(xiàn)方案。當(dāng)然下方在棧與隊列的實現(xiàn)中,我們依然采用“面向接口
延伸閱讀
學(xué)習(xí)是年輕人改變自己的最好方式