鍊錶的實現 單鏈表 雙鏈表

2021-09-11 21:04:06 字數 2326 閱讀 2233

鍊錶知識的引入:

對於之前我們接觸到的陣列知識,要想儲存多個物件,首先想到的一定是物件陣列。

但是陣列是乙個長度固定的線性結構,一旦內容不足或者過多,都會在成記憶體資源的浪費,由此引入鍊錶充分解決資源浪費問題。

class node

//private屬性需要設定getter setter方法

public node getnext()

public void setnext(node next)

public object getdata()

public void setdata(object data)

}public class list

public static void getnodedata(node node)}}

執行結果:

在以上整個鍊錶的實現過程中可以看出,node類的核心作用就是實現節點資料儲存和節點連線問題。

當使用者呼叫時需要自己進行節點的建立和節點掛載,比較麻煩,所有此時引入乙個單獨的link類,通過link了實現資料儲存以及節點關係掛載

//定義link介面

inte***ce link

//實現link介面

class linkimpl implements link

}@override

//增加節點

public void add(object obj) else

this.size++;//鍊錶長度增加

}@override

public boolean remove(int index)

node node = node(index);

if(node == this.first)else

}else if(node == this.last)

node.next.prev = node.prev;

node.prev.next = node.next;

node.prev = node.next = null;

this.size--;

return true;

}@override

public boolean set(int index, object obj)

node node = node(index);

node.data = obj;

return true;

}@override

public object get(int index)

return node(index).data;

}@override

//取得當前節點的下標

public int contains(object obj)

index++;

}return -1;

}else

index++;

}return -1;}}

@override

//節點刪除

public void clear()

this.first = this.last = null;

this.size--;

}@override

public void printlink()

}@override

//取得鍊錶長度

public int length()

@override

public object toarray()

return result;

}// 僅用於linkimpl類內部

private node node(int index)

return result;

}node result = this.last;

for(int i = size-1 ; i > index ; i--)

return result;

}private boolean islinkelement(int index) {

return index>=0 && index執行結果:

單鏈表 雙鏈表 迴圈鍊錶總結

1.單鏈表 為公升序鍊錶,value按公升序排列 include include typedef struct node node 最好放在標頭檔案中 node sll creat int sll length node p node sll del node head,int value void...

迴圈鍊錶 迴圈雙鏈表 迴圈單鏈表

迴圈單 雙鏈表,建立 初始化 尾插 頭插 遍歷 插入 刪除 判空 部分函式採用過載 此處為c include include include using namespace std typedef struct lnodelnode,linklist typedef struct dnodednod...

單鏈表 雙鏈表

實現乙個單鏈表,鍊錶初始為空,支援三種操作 1 向煉表頭插入乙個數 2 刪除第k個插入的數後面的數 3 在第k個插入的數後插入乙個數 現在要對該鍊錶進行m次操作,進行完所有操作後,從頭到尾輸出整個鍊錶。注意 題目中第k個插入的數並不是指當前鍊錶的第k個數。例如操作過程中一共插入了n個數,則按照插入的...