資料結構與演算法 單鏈表

2021-10-25 05:39:49 字數 3124 閱讀 1931

單鏈表的建立

1.建立乙個head頭節點,作用就是表示單鏈表的頭

2.後面我們每新增乙個節點,就直接加入鍊錶的最後

//定義heronode,每個heronode物件就是乙個節點

class

heronode

//為了顯示方法,重新tostring

public string tostring()

}//定義singlelinkedlist 管理英雄

class

singlelinklist

//當退出while迴圈時,temp就指向鍊錶的最後

//將最後這個節點的next 指向新的節點

temp.next = heronode;

}//顯示鍊錶【遍歷】

public

void

list()

heronode temp = head;

while

(temp.next!=null)}}

public

class

main1

}

根據排名來插入制定位置(沒有排名就報錯)

需要按照編號的順序(no)新增

1.找到這個新加節點的位置,通過輔助指標(遍歷)

2.新的節點.next = temp.next

3.temp.next = 新的節點

//定義heronode,每個heronode物件就是乙個節點

class

heronode

//為了顯示方法,重新tostring

public string tostring()

}//定義singlelinkedlist 管理英雄

class

singlelinklist

//當退出while迴圈時,temp就指向鍊錶的最後

//將最後這個節點的next 指向新的節點

temp.next = heronode;

}//第二種方式新增英雄,根據排名將英雄插入到指定位置

public

void

addbyorder

(heronode heronode)

if(temp.next.no > heronode.no)

else

if(temp.next.no == heronode.no)

temp = temp.next;

//後移。遍歷當前鍊錶,結束迴圈}if

(flag)

else

}//顯示鍊錶【遍歷】

public

void

list()

heronode temp = head;

while

(temp.next!=null)}}

public

class

main1

修改節點

//定義singlelinkedlist 管理英雄

class

singlelinklist

//找到需要的節點

heronode temp = head;

boolean flag =

false

;//表示是否找到節點

while

(true)if

(temp.no == newheronode.no)

temp = temp.next;}if

(flag)

else

}}

//定義heronode,每個heronode物件就是乙個節點

class

heronode

//為了顯示方法,重新tostring

public string tostring()

}//定義singlelinkedlist 管理英雄

class

singlelinklist

//當退出while迴圈時,temp就指向鍊錶的最後

//將最後這個節點的next 指向新的節點

temp.next = heronode;

}//第二種方式新增英雄,根據排名將英雄插入到指定位置

public

void

addbyorder

(heronode heronode)

if(temp.next.no > heronode.no)

else

if(temp.next.no == heronode.no)

temp = temp.next;

//後移。遍歷當前鍊錶,結束迴圈}if

(flag)

else

}//修改節點的資訊,根據編號修改

//1.根據newheronode的編號no來修改

public

void

update

(heronode newheronode)

//找到需要的節點

heronode temp = head;

boolean flag =

false

;//表示是否找到節點

while

(true)if

(temp.no == newheronode.no)

temp = temp.next;}if

(flag)

else

}//顯示鍊錶【遍歷】

public

void

list()

heronode temp = head;

while

(temp.next!=null)

}//刪除單鏈表中的乙個節點

//1.找到要刪除節點的前乙個節點的位置

= temp.next.next

public

void

delete

(int no )

if(temp.next.no ==no)}if

(flag)

else}}

public

class

main1

}

單鏈表(演算法與資料結構)

鍊錶 單鏈表 為每個結點新增1個指標域,每個結點包括兩個域 資料域 存放元素本身資訊 指標域 存放後繼結點的儲存位置 指向鍊錶中第乙個結點的指標,稱為這個鍊錶的頭指標。最後乙個元素的指標不指向任何結點,稱為空指標,圖示中用 表示,在演算法中用 null 表示 帶頭結點的單鏈表 頭結點 可以不存資訊,...

資料結構與演算法 單鏈表

鍊錶是有序的列表,但是它在記憶體中是儲存如下 鍊錶是以節點的方式來儲存的 鍊錶的各個節點不一定是連續儲存的 鍊錶分帶頭結點的鍊錶和不帶頭結點的鍊錶 新增先建立乙個 head 頭結點,作用就是表示單鏈表的頭 後面我們每新增乙個結點,就直接加入到鍊錶的最後 遍歷 通過乙個輔助變數,幫助來遍歷整個鍊錶 第...

資料結構與演算法 單鏈表(一)

單鏈表的頭插法,插入時就是逆序。insertlist 還不完善。include include define error 0 define ok 1 typedef int status typedef int elemtype typedef struct nodenode typedef str...