鍊錶 動手封裝自己的鍊錶

2021-10-01 22:24:44 字數 1822 閱讀 8859

package datastructure.chapter4;

/** * @author: zjtmeng

* @date: 2020/1/1 22:24

* @version 1.0

*/public

class

linkedlist

public

node

(e e)

public

node()

@override

public string tostring()

}//虛擬頭結點

private node dummyhead;

private

int size;

public

linkedlist()

//獲取鍊錶中元素的個數;

public

intgetsize()

//返回鍊錶是否為空

public

boolean

isempty()

//在鍊錶的index(0-based)位置新增新的元素e

public

void

add(

int index, e e)

prev.next =

newnode

(e, prev.next)

; size++;}

//在煉表表頭處新增元素

public

void

addfirst

(e e)

//在鍊錶末尾處新增新的元素e

public

void

addlast

(e e)

//獲得鍊錶的第index(0-based)個位置的元素

public e get

(int index)

return cur.e;

}//獲得鍊錶的第乙個元素

public e getfirst()

//獲得鍊錶的最後乙個元素

public e getlast()

//修改鍊錶的第index(0-based)個位置上的元素為e

public

void

setdummyhead

(int index, e e)

cur.e = e;

}//查詢鍊錶中是否存在元素e

public

boolean

contains

(e e)

return

false

;// for (int i = 0; i < size; i++)

// return false;

}//從鍊錶中刪除第index(0-based)個位置上的元素

public e remove

(int index)

node delnode = prev.next;

prev.next = delnode.next;

delnode.next = null;

size--

;return delnode.e;

}//從鍊錶中刪除第乙個元素

public e removefirst()

//從鍊錶中刪除最後乙個元素

public e removelast()

@override

public string tostring()

res.

("null");

return res.

tostring()

;}}

封裝鍊錶和雙向鍊錶

封裝鍊錶 尾新增的效率低,非法下標的判斷也非常低。1 單鏈表 節點 資料域 指標域資料項 頭指標尾指標 節點數量 2 靜態鍊錶 節點 資料域 游標靜態鍊錶的節點儲存在連續的記憶體,通過遊戲來訪問下乙個節點。這種鍊錶在插入刪除時只需要修改游標的值,而不用申請 釋放記憶體達到鏈式結構的效果。但是也犧牲的...

雙向鍊錶封裝

雙向鍊錶 function doublelinkedlist 煉表頭節點 this.head null 鍊錶尾節點 this.fail null 鍊錶長度 this.length 0 在鍊錶尾部新增元素 var newelement new node value if this.head else ...

自己寫的鍊錶

include include int mylistcount 0 struct mylist mymainlist void main mymainlist.pc null mymainlist.pcnext null mylist plisttemp null char pctemp null ...