資料結構 單鏈表的增刪改查詳解(不帶頭節點)

2021-09-27 04:20:12 字數 3079 閱讀 5871

單鏈表:是一種鏈式訪問的資料結構,用一組任意位址空間(即儲存單元)來存放線性表的資料元素。單鏈表中的每個資料都以節點的形式來表示,每個節點都是由值域及指標next域構成,其中值域儲存當前節點的資料值,next域儲存下個節點的位址。

單鏈表的結構如下所示:(以不帶頭節點為例)

鍊錶「增刪改查」的原理(附**):

(1)頭插: 將新節點newentry的next域鏈結到頭節點的位址中,同時更新頭節點

}(2)尾插: 將尾節點tailentry的next域鏈結到新節點的位址中,同時更新尾節點

}(3)頭刪: 頭節點的value域置空以防止記憶體洩漏,將其下個節點的位址更新為新的頭節點

//防止記憶體洩漏

headentry = headentry.next;

}(4)尾刪: 遍歷整個鍊錶,標記尾部前驅節點,將前驅節點的next域置空,同時更新尾節點

//防止記憶體洩漏

beforeentry.next=null;

//將尾結點置空

tailentry=beforeentry;

}}(5)刪除指定元素: 遍歷鍊錶找到與指定元素值相同的元素value,將value前乙個節點的next域指向value下乙個元素的位址

}}不帶頭節點的雙向單鏈表結構如下:

雙向單鏈表的增刪改查與上面的原理對應無基本差別,但要分析時記得更新前驅 pro

public

class

duplexlink

comparable

>

}private entry

headentry;

private entry

tailentry;

//頭插

public

void

addhead

(e value)

//乙個節點與普通節點相同

newentry.next=headentry;

headentry.pro=newentry;

headentry=newentry;

}//尾插

public

void

addtail

(e value)

tailentry.next=newentry;

newentry.pro=tailentry;

tailentry=newentry;

}//頭刪

public

void

removehead()

headentry.next.pro=null;

headentry=headentry.next;

}//尾刪

public

void

removetail()

else

if(headentry.next == null)

else

beforeentry.next = null;

tailentry.pro=null;

tailentry = beforeentry;}}

//刪值

public

void

removevalue

(e value)

if(headentry.value.

compareto

(value)==0

)return;}

for(entry

p = headentry; p.next.next!= null; p = p.next)}}

}

Java實現單鏈表資料結構的增刪改查

package 鍊錶 1 單鏈表的插入 刪除 查詢操作 2 鍊錶中儲存的是int型別的資料 public class singlylinkedlist return p 通過index查詢 public node findbyindex int index return p 無頭部節點 哨兵 表頭部...

C語言資料結構 單鏈表的增刪改查

注意 linklist l 於 linklist l 的區別,前者只能改變指標指向的內容,後者同時還可以修改指標本身,即指標內部 include include includetypedef int elemtype typedef int status 定義結構體 typedef struct l...

單鏈表增刪改查

include include include include using namespace std struct node node int x,node next null 帶參初始化 建立煉表頭結點,新增引用因為要改變指標的位址指向 void createlink node head 新增鍊...