請尊重作者的勞動成果,如需轉(zhuǎn)載請注明出處,謝謝!
如果覺得不錯,可以關注我或者點贊,這就是你們對我最大的鼓勵!
數(shù)據(jù)結構是算法的副產(chǎn)品,也就是說我們使用算法的時候,會創(chuàng)造出一些數(shù)據(jù)結構來實現(xiàn)我們的想法。那么想要更好的理解某些算法,就需要了解數(shù)據(jù)結構啦。
首先,我們來認識一個概念就是我們常用的數(shù)組,其實就是指針,如果不知道指針是什么,可以點擊?指針
實驗得真知

實際上,創(chuàng)建數(shù)組就是申請一塊內(nèi)存單元。數(shù)組與指針是等價的。
數(shù)組的內(nèi)存示意圖如下所示

指針就是存儲內(nèi)存地址的變量,就像我們找房子一樣,通過門牌號找房子。
門牌號就是內(nèi)存地址,房子就是我們存放的值。
* 這個符號代表訪問該地址對應的變量,&代表獲得該變量的地址
現(xiàn)在,我們開始講第一種數(shù)據(jù)結構,也是最基礎的一種數(shù)據(jù)結構------線性表。
那么什么是線性表呢,直觀的來看,就是下圖

線性表就是一個又一個像上圖綠色的個體串起來一種結構。綠色的方格我們稱作線性表的數(shù)據(jù)元素。 ? 數(shù)據(jù)元素即可以放基本數(shù)據(jù)類型,又可以放自定義的結構體。
線性表很靈活,它可以根據(jù)需要伸長或者縮短,即既可以插入,又可以刪除元素。
那么,如何實現(xiàn)呢?要求有
一、能夠存放各種類型數(shù)據(jù)
二、能夠通過自己訪問下一個元素
三、長度能夠伸長和縮短
數(shù)組能夠滿足前兩條,然而為了能夠滿足第三條,我們就需要使數(shù)組大小能夠變化,即創(chuàng)建動態(tài)大小的數(shù)組。也稱為順序表。
使用C語言實現(xiàn)基本增刪改查如下圖

容易發(fā)現(xiàn),使用順序表改和查十分方便,但是增和刪卻很麻煩,每次增或刪都要將數(shù)組元素進行挪動。這是由于數(shù)據(jù)的結構所決定的。不同的數(shù)據(jù)結構對算法有著至關重要的影響。
當我們經(jīng)常使用改和查時,我們使用這種結構比較方便。
但當使用增和刪比較頻繁時,我們可以使用另外一種結構,叫鏈表。鏈表實現(xiàn)增和刪比順序表方便很多。
下節(jié)我們將介紹鏈表