二江醇,順序表
1,順序表的形式何暇。(先忘掉python的列表這些數據結構)
內存:以一個字節(jié)為索引單位嫁审;類型本質:int,char赖晶;連續(xù)存儲:順序存儲
接下來是兩種基本順序表概念圖:左是一體順序表(多為存儲的元素數據類型一致)律适,右是元素外置的順序表,上圖所示是32位機器遏插,li變量直接指向第一個捂贿,也是第一個元素為什么是li[0],因為偏移量為0(注:計算機按字節(jié)尋址)邏輯位置即下標如li[1]
2,順序表結構如何胳嘲,又如何實現呢(在python中已經對這一部分進行了封裝):
一體式和分離式結構使用方面新的前者全部要新申請厂僧;后者表頭不變,只是鏈接指向數據地址的變了了牛。引出下面的概念(分離式結構又稱動態(tài)順序表)
3颜屠,順序表的操作:
增加:
4辰妙,python中的順序表:
即list使用了元素外置順序表形式的分離式結構。(為什么分配八個元素存儲區(qū):元素外置甫窟,順序表中存的是位置的數值密浑,都是一定大小的,這就使存儲不同類型元素出現了)
三,鏈表
1粗井,引入概念
2,單向鏈表:
增刪改查:
對于指向下一個節(jié)點的指針在c中可以用*這個數據結構表示浇衬,那在pyhton中怎么弄懒构?
先來看圖,在python中耘擂,a=10代表a占一小塊地方胆剧,10占一小塊地方,a占的地方里面存10的地址醉冤。所以秩霍,最后一句就相當于a,b=20冤灾,10,a指向20辕近,b指向10韵吨。這就是為什么python不需要int a=10,c中這個相當于一小塊內存移宅,數值為10別名為a归粉,也就是變量a。在py中一切皆對象
所以漏峰,定義一個類糠悼,類node中連最基本兩個成員函數為elem,next浅乔,代碼實現:
這也是為什么現在順序表的使用多于鏈表的原因
3,雙向鏈表:
代碼不給看嘿嘿靖苇,諸看官可以嘗試自己實現
數據存儲方式講完了席噩。下面就是數據結構的第二部分即如何使用
四 棧和隊列
1,棧:利用線性表的任意一種都可以實現
使用順序表實現:
2贤壁,隊列
hhhhhhhh,代碼再給一次:
好啦悼枢,數據結構大部分介紹完成,下面就會聊聊一些常用的排序搜索算法嗯哼哼
看我這么辛苦小心心不給一個嗎脾拆?企圖賣萌中@~@