資料結構 鍊錶

2021-09-11 13:22:35 字數 1572 閱讀 8685

記憶體.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...