我們這裡只講解他們和資料結構之間的關係,並不會給大家一一講他們的語法。如果有一些朋友,對於這些東西還不是很熟悉,大家可以去其他地方找找教程。
下面我們來給大家講一下這兩種結構的迭代器的使用。
首先,我們來講一講為什麼要引入迭代器這乙個東西。舉個例子,假如我要對儲存數字的乙個順序表或者鍊錶中的每乙個數字進行判定,如果大於5,保留,否則,刪除。那麼,如果不引入迭代器的話,那麼我們就要寫乙個迴圈,判斷其中的數字的大小,如果小的話,就刪除。在刪除過程中,都是重新找到這個節點再刪除。這樣的話就有一些麻煩,明明已經找到這個數了,為什麼還要再重新找呢?而且,在表中刪除過結點以後,他的書目會減少,那麼勢必會對遍歷帶來影響,請看**
public
static
void
main(string args)
for(int i=0;iif(i>1000)
}long endtime=system.currenttimemillis();
system.out.println(endtime-starttime);
}
我執行了一下,新增和刪除共用750ms,這個時間就是比較長了,估計有朋友要問了,為什麼你從第零個開始刪刪除所有的時間都比這個長呢。其實他是因為你在刪除某乙個的時候是要去找到這個位置再刪,而刪除第零個就是直接刪。
此時,我們就引入了迭代器。在迭代器中,他會將這個結構中的資料乙個乙個迭代,一般都是只能向後迭代。在找到某乙個點之後,如果要刪除它,在迭代器中刪除,就不需要在找到這個位置了。而且在刪除後,可以繼續向後迭代,無需序號。
我們直接上**
public
static
void
main(string args)
iteratoriteator=ar.iterator();
while(iteator.hasnext())
long endtime=system.currenttimemillis();
system.out.println(endtime-starttime);
}
這個執行時間基本上都在90ms左右,時間複雜度大大提高。 資料結構與演算法 線性表
概念 一種資料結構,每個結點最多只有乙個前驅結點和乙個後繼結點 類別 順序表 定長 鍊錶 變長 棧 棧頂刪除 彈棧 棧頂插入 壓棧 後進先出 lifo 佇列 隊頭刪除 出隊 隊尾插入 入隊 先進先出 fifo 線性表的抽象資料型別定義 c 1.template2.class list 棧的抽象資料型...
資料結構與演算法 線性表
n維向量 x1,x2,xn 是乙個長度為n的線性表 英文小寫字母表 a,b,c,z 是乙個長度為26的線性表 一年中的四個季節 春,夏,秋,冬 是乙個長度為4的線性表 矩陣是乙個比較複雜的線性表 學生情況登記表是乙個複雜的線性表 由若干資料項組成的資料元素稱為記錄 由多個記錄構成的線性表又稱為檔案 ...
資料結構與演算法 線性表
1.線性表 1.1 線性表的定義和基本運算 定義 線性表是具有相同資料型別的n個資料元素的有限序列。除表頭元素外,每個元素有且僅有乙個直接前驅 除表尾元素外,每個元素有且僅有乙個直接後繼。特點 個數有限 具有邏輯上的順序性 資料元素型別都相同。基本操作 初始化 求表長 按值查詢 按位查詢 插入 刪除...