為鍊錶資料結構實現iterator介面

2022-03-16 11:37:54 字數 1561 閱讀 4196

為所有的資料結構提供統一的訪問方式。

介面物件一共有3個方法,

next()

方法、return()

方法、throw()

方法。next() 必填

用於for..of迭代。

該方法返回乙個物件。

value

:元素值,

done

:狀態位,用於指定迴圈是否結束。

return() 可選

用於break語句,或出錯結束迴圈。

throw() 可選

throw方法主要是配合

generator

函式使用

通過內建symbol.iterator屬性來實現介面,該介面主要是返回乙個物件指標,然後通過呼叫介面物件的

next

方法來實現訪問下乙個元素值。

1:陣列

2:字串

3:函式的

arguments

物件4:  set/map 資料結構

5:typedarray

6:nodelist

物件1:手動呼叫。

2:for..of

語句3:

... (

擴充套件運算子

)for...of迴圈還有乙個特點,就是會正確識別

32 位

utf-16

字元

class node 

}class link

/*** 插入

* @param value

* @param item

*/insert(value, item)

/*** 查詢節點

* @param item

* @returns

*/find(item)

return

current;

}/**

* iterator介面實現

*/[symbol.iterator]() ;

}return ;

},return

() }}}

}

let l = new link(0);

l.insert(2, 0);

l.insert(5, 2);

l.insert(3, 2); //

到2的後面插入乙個3

//for..of 方式呼叫介面

for(let o of l)

//擴充套件運算子呼叫介面

console.log(...l);

//手動呼叫。

//獲取介面物件

let iter =l[symbol.iterator]();

//呼叫next 方法

console.log(iter.next());

console.log(iter.next());

console.log(iter.next());

資料結構鍊錶實現

二 實驗基本原理與設計 三 主要儀器裝置及耗材 四 附錄 利用linux gnu make c 專案管理軟體工具實現資料結構鍊錶 linked list 要求實現以下功能 push,pop,insert,delete,search,visit go through,clear。節點的資料必須具有一般...

資料結構 棧 鍊錶實現

鍊錶實現的棧可以克服在程式執行時也無法估計棧容量大小的情況 棧中的元素是儲存在稱為節點的類中,每個節點都包含乙個資料域和乙個指標域 資料域儲存棧的值,指標域指示棧中下乙個值得位置 而棧類的資料成員是需要乙個指向棧頂的指標即可 類宣告如下 typedef int stackelement class ...

資料結構 鍊錶(java實現)

鍊錶節點定義 private class node public void setnext node next public node object data private node head private int size public linkedlistonepoint public bo...