陣列與鍊錶的比較,鍊錶的建立及其插入刪除

2021-10-14 11:47:47 字數 2452 閱讀 6474

陣列與鍊錶均為線性表,即乙個元素的前繼或後驅只有乙個元素,為資料結構的基礎。

其中陣列與鍊錶相比,陣列具有按索引查詢方便的特點,其查詢的時間複雜度為o(1),而鍊錶查詢時最壞情況時,所查元素位於鍊錶末端,需查詢n次,時間複雜度為o(n)。

鍊錶則具有插入刪除方便的特點,無論在什麼位置插入,只需將將其next指標改變即可,不需要改變其他元素的位置,而對於陣列,則需將其後繼元素全部向後移動乙個單位,再將元素填入。

鍊錶在建立前,需要定義node的結構體,設定其get、set方法

node的構成有next指標域,和data資料域。

class

node

private object data;

public object getdata()

public

node

(object data)

public

node()

}

結點建立結束後,進行鍊錶的建立,鍊錶建立時一般定義其「頭結點」或「根節點」。它無具體資料,用來表示第乙個元素。

class

linkedlist

鍊錶的新增方法,(該方法採用頭插法,即在頭結點之後插入)

public

void

link_add

(object data)

鍊錶的插入方法,根據插入的位置進行結點變更,然後進行插入:

public

void

link_insert

(int index,object data)

pnode.next=node.next;

node.next=pnode;

system.out.

println

("插入成功");

}

鍊錶的刪除方法,根據要刪除的資料內容進行比較,若無資料則丟擲異常:

public

void

link_delete

(object data)

if(node.next.

getdata()

==data)

else

if(node.next==null) system.out.

println

("資料不存在");

}catch

(exception e)

}

鍊錶列印,因新增時為頭插法,因此與插入順序相反:

public

void

link_print

(linkedlist linkedlist)

完整**:

package list;

class

node

private object data;

public object getdata()

public

node

(object data)

public

node()

}class

linkedlist

public

void

link_add

(object data)

public

void

link_insert

(int index,object data)

pnode.next=node.next;

node.next=pnode;

system.out.

println

("插入成功");

}public

void

link_delete

(object data)

if(node.next.

getdata()

==data)

else

if(node.next==null) system.out.

println

("資料不存在");

}catch

(exception e)

}public

void

link_print

(linkedlist linkedlist)

system.out.

println

("--------------------------");

}public

static

void

main

(string[

] args)

}

輸出結果:

陣列與鍊錶的比較

陣列,在記憶體上給出了連續的空間.鍊錶,記憶體位址上可以是不連續的,每個鍊錶的節點包括原來的記憶體和下乙個節點的資訊 單向的乙個,雙向鍊錶的話,會有兩個 陣列優於鍊錶的 1.記憶體空間占用的少,因為鍊錶節點會附加上一塊或兩塊下乙個節點的資訊.但是陣列在建立時就固定了.所以也有可能會因為建立的陣列過大...

C 鍊錶及其建立

鍊錶是由一系列連線在一起的結點構成,其中的每個結點都是乙個資料結構。鍊錶的結點通常是動態分配 使用和刪除的,允許鍊錶在程式執行時增大或縮小。如果需要將新資訊新增到鍊錶中,則程式只需分配另乙個結點並將其插入到系列中。如果需要從鍊錶中刪除特定的資訊塊,則程式將刪除包含該資訊的結點。儘管鍊錶的編碼和管理比...

鍊錶2(鍊錶的建立與遍歷)

現有有n個學生的資料記錄,每個記錄包括學號 姓名 三科成績。編寫乙個函式input,用來輸入乙個學生的資料記錄。編寫乙個函式print,列印乙個學生的資料記錄。在主函式呼叫這兩個函式,讀取n條記錄輸入,再按要求輸出。n 100 include typedef struct student stude...