c 實現LinkedList集合

2021-08-21 11:20:43 字數 3089 閱讀 8065

linkedlist集合:

陣列和list、arraylist集合都有乙個重大的缺陷,就是從陣列的中間位置刪除或插入乙個元素需要付出很大的代價,其原因是陣列中處於被刪除元素之後的所有元素都要向陣列的前端移動。

linkedlist(底層是由鍊錶實現的)基於鍊錶的資料結構,很好的解決了陣列刪除插入效率低的問題,且不用動態的擴充陣列的長度。

linkedlist的優點:插入、刪除元素效率比較高;缺點:訪問效率比較低。

mylinkedlist的實現:

using system;

using system.collections;

using system.collections.generic;

using system.linq;

namespace cchoop}}

class mylinkedlistnode

public mylinkedlistnodeprevious

public mylinkedlistnodenext

public mylinkedlistlist

public

mylinkedlistnode(mylinkedlistlist, mylinkedlistnodeprevious, mylinkedlistnodenext, t value)

}class mylinkedlist: icollection

public mylinkedlistnodelast

public

int count

public

mylinkedlist()

//未實現

private

mylinkedlist(icollectioncollection)

////// 新增到鍊錶尾部

//////

新增的資料

public

void

add(t item)

public mylinkedlistnodeaddbefore(mylinkedlistnodenode, t item)

if (node.list != this)

mylinkedlistnodenewnode = new mylinkedlistnode(this, node.previous, node, item);

if (node == this.first)

else

this.count++;

return newnode;

}public mylinkedlistnodeaddafter(mylinkedlistnodenode, t item)

mylinkedlistnodenewnode = new mylinkedlistnode(this, node, node.next, item);

if (node == this.last)

else

this.count++;

return newnode;

}public mylinkedlistnodeaddfirst(t item)

else

this.count++;

return node;

}public mylinkedlistnodeaddlast(t item)

else

this.count++;

return node;

}private

void

throwargumentnullexception(mylinkedlistnodenode)

}public

void

clear()

public

bool

contains(t item)

mylinkedlistnodetempnode = this.first;

while (tempnode != null)

tempnode = tempnode.next;

}return

false;

}public

bool

contains(t item, out mylinkedlistnodenode)

if (isempty)

mylinkedlistnodetempnode = this.first;

while (tempnode != null)

tempnode = tempnode.next;

}return

false;

}public

void

copyto(t array, int arrayindex)

public

bool isreadonly

}public

bool

remove(t item)

mylinkedlistnodenode;

if (this.contains(item, out node))

else

if (node == this.last && node != this.first)

else

if (node != this.first && node != this.last)

else

this.count--;

return

true;

}return

false;

}public

bool isempty

}public ienumeratorgetenumerator()

ienumerator ienumerable.getenumerator()

private

class enumerator : ienumerator

public t current

}public

void

dispose()

object ienumerator.current

}public

bool

movenext()

else

}public

void

reset()}}

}

java中LinkedList 集合類實現棧和佇列

across through over的區別 三者都有 穿過 通過 的意思,但用法各不相同。across多指從一定範圍的一邊到另一邊,且在物體的表面上或沿著某一條線的方向而進行的動作,其含義常與介詞on有關。如 the students ran across the playground into ...

LinkedList集合整理

jdk1.6以後的新特性 addfirst offerfirst addlast offerlast getfirst peekfirst getlast peeklast removefirst pollfirst removelast polllast jdk1.6以後,刪除或獲取元素時,如果列...

泛型集合 LinkedList

using system using system.collections.generic using system.linq using system.text using system.collections namespace linkedlist class program static v...