1

Squeak はオープン ソース環境であるため、次のようなデータ構造の実装を見ることができますOrderedCollection>>addFirst

addFirst: newObject 
"Add newObject to the beginning of the receiver. Answer newObject."

firstIndex = 1 ifTrue: [self makeRoomAtFirst].
firstIndex := firstIndex - 1.
array at: firstIndex put: newObject.
^ newObject

OrderedCollection>>removeFirst:

removeFirst: n
"Remove first n object into an array"

| list |
list := Array new: n.
1 to: n do: [:i |
    list at: i put: self removeFirst].
^ list

その後、スタック データ構造を操作できますね。

私は、Smalltalk にはポインター構造がないことを知らされました。Java のような言語にもポインター構造はありませんが、スクリプト言語としてではなく、ツリー、ダイアグラムなどの基本的なデータ構造を実装する必要があります (「スクリプト: 21 世紀の高水準プログラミング」で参照)。

Smalltalk はどのようにツリー データ構造を実装しますか?

4

1 に答える 1

4

Smalltalkには、Javaと同じように、どこにでもポインタがあります。インクリメントポインタのようなCのようなことはできませんが、それは空を指すポインタでmyVar := OrderedCollection newあることを意味します。myVarOrderedCollection

addFirst:はい、を使用して要素をプッシュし、要素removeFirst:removeFirstポップすることにより、OrderedCollectionを使用してスタックをシミュレートできます。(同様に、で要素をプッシュしたり、で要素をaddFirst:削除したりすることで、キューをシミュレートできますremoveLast

Smalltalkでは、他の言語と同じようにツリーを実装できます。たとえば、私はジッパーで遊ぶための非常に基本的なツリー実装を作成しました。非常に一般的なツリー構造を実装するクラスを見てください。ノードには任意の数の子があります。ZTree

于 2011-02-22T08:42:05.800 に答える