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是最...