記憶體.png
鍊錶是由記憶體中一系列不相連的結構組成,每乙個結構均含有表元素和next指標。優點是插入和刪除比較方便(不需移動其他元素, 只需改變指標),缺點是訪問效率低,儲存空間利用率低。單向鍊錶
snip20170615_7.png
迴圈鍊錶
snip20170615_8.png
雙向迴圈鍊錶
snip20170615_9.png
//鍊錶操作:插入,刪除,遍歷
class
haha
thelist.displaylist();
}}class
jiedian
public void displayjiedian()");
}}class
linklist
public boolean isempty()
public void insertfirst(int id,double dd)
public jiedian deletefirst()
public void displaylist()
}}複製**
結果:
snip20170616_1.png
常見問題:
1.判斷乙個給定的單鏈表是否有環?
2.環的入口
3.環的長度複製**
snip20170619_1.png
snip20170619_3.png
第一次相遇時:
slow走的長度s=ab+bc
fast走的長度2s=ab+bc+n*r
ab=n*r-bc
求入口:讓兩個指標同時分別從a、c出發,相遇點就是入口b
求環長:c點相遇之後,指標slow繼續每次走1步,fast每次走2步。在下次相遇的時候fast比slow正好又多走了一圈,也就是多走的距離等於環長。複製**
**:class
haha
//入口節點
public static jiedian rukou(jiedian jd1,jiedian jd2)}}
//環長
public static int length(jiedian jd)
}return
0; }
//是否存在環,如果存在,返回相遇的結點
public static jiedian hasloop(jiedian jd)
int d1 = slow.idata;
int d2 = fast.idata;
double t1 = slow.ddata;
double t2 = fast.ddata;
if(d1 == d2 && t1 == t2)
}return
null;
}}class
jiedian
public void displayjiedian()");
}}複製**
執行結果:
snip20170619_4.png
資料結構 鍊錶
鍊錶 what 就是一張鏈式儲存的表,是一種資料結構,是基礎,所以還是不要想有什麼用。具體呢?在c中就用結構體實現物件描述,然後通過函式來實現各個基本操作 c 則用類來表述,c中的結構體就可以看成c 中的類,然後通過類封裝各個操作步驟。這些操作實現後就需要 來測試,號稱demo,就是main函式裡面...
資料結構 鍊錶
鍊錶中的資料是以節點來表示的,每個結點的構成 元素 資料元素的映象 指標 指示後繼元素儲存位置 元素就是儲存資料的儲存單元,指標就是連線每個結點的位址資料。鍊錶的結點結構 data next data域 存放結點值的資料域 next域 存放結點的直接後繼的位址 位置 的指標域 鏈域 以 結點的序列 ...
資料結構 鍊錶
一般的建立線性鍊錶有兩種 1.正序法 需要三個指標,head作為頭指標,pre作為前乙個指標,cur作為當前指標用來建立空間 2.倒序法,利用指標的插入,只需要兩個指標,不斷的往頭指標後插入新空間,不過插入的越早,離頭指標越遠,也就越後面輸出 1.線性鍊錶的建立及查詢刪除 include inclu...