LinkedList基本實現Java版

2021-07-29 09:55:41 字數 1806 閱讀 5730

public class mylinkedlistimplements iterable

}private int thesize;//元素個數

private int modcount=0;//操作次數

private nodebeginmarker;//開始指標,指向第乙個元素的前乙個位置

private nodeendmarker;//末尾指標,指向最後乙個元素的後乙個位置

public mylinkedlist()

public void clear()

public void doclear()

public int size()

public boolean isempty()

//在p之前新增乙個元素,內部呼叫,為public函式服務

private void addbefore(nodep,anytype x)

//移除乙個元素

private anytype remove(nodep)

//查詢指定位置的元素,之所以新增lower和upper是為了避免使用thesize,為了避免不小心修改thesize

private nodegetnode(int idx,int lower,int upper)

if(idxidx;i--)

}return p;

}//得到指定位置的元素

private nodegetnode(int idx)

//在末尾新增乙個元素

public boolean add(anytype x)

//在指定位置新增乙個元素

public void add(int idx,anytype x)

public anytype get(int idx)

//修改指定位置的值

public anytype set(int idx,anytype newval)

public anytype remove(int idx)

//新增迭代器

@override

public iteratoriterator()

private class linkedlistiterator implements iterator

@override

public anytype next()

anytype nextitem=current.data;

current=current.next;

oktoremove=true;

return nextitem;

}public void remove()

if(!oktoremove)//呼叫mylinkedlist的刪除函式,因為當前current已經向後移動過了,所以需要前移

mylinkedlist.this.remove(current.prex);

expectedmodcount++;

oktoremove=false;}}

//測試

mylinkedlista=new mylinkedlist<>();

a.add(1);

a.add(2);

a.add(3);

a.add(1,4);

for(integer s:a)

system.out.println();

system.out.println(a.size()+","+a.get(1));

a.remove(1);//刪除

iteratort=a.iterator();

while(t.hasnext())

for(integer s:a)

LinkedList基本操作

一 概述 linkedlist與arraylist一樣實現list介面,只是arraylist是list介面的大小可變陣列的實現,linkedlist是list介面鍊錶的實現。基於鍊錶實現的方式使得linkedlist在插入和刪除時更優於arraylist,而隨機訪問則比arraylist遜色些。l...

手工實現LinkedList

參照其底層 按照自己的理解實現了linkedlist的一些基本功能。如果對c和c 指標了解一下,理解起來非常快。package cn.liu.mylinkedlist 結點 public class node 構造器,來傳資料 public node object element package c...

手工實現linkedList

鍊錶結構就像一根鏈條一樣,環環相扣。每一環 node entry 都由next previous,element 存放資料的地方 第乙個的next 是第二個,第二個的next是第三個,直到最後乙個的next 可以為null 最後第乙個的previous 是最後第二個,最後第二個的previous是最...