2011-02-22 4 views
1

Squeakのは、オープンソース環境であるため、我々はOrderedCollection>>addFirstのようなデータ構造の実装を見ることができます:Squeakがスクリプト言語でない場合、ツリーデータ構造はどこですか?

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のような言語にはポインタ構造がありません。スクリプト言語ではなく、tree、diagram(Scripting: Higher Level Programming for the 21st Century)のような基本的なデータ構造を実装する必要があります。

Smalltalkはツリーデータ構造?

+0

私はあなたの質問の英語を改善しようとしました。私を修正してください –

+0

なぜスクリプト言語とツリーデータ構造の関係を作るのかわかりませんBtw "スクリプト言語"は非式IMHOです – mathk

+0

好きなスクリプト言語e perl、TclはUnixのパイプのようないくつかの種類の接着剤をrepresendしますが、アルゴリズム分野での使用には適していませんが、オブジェクト指向言語としての小さな話、アルゴリズム、データ構造などを実装する必要があります。 ) – parsifal

答えて

4

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

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

あなたはSmalltalkの中であなたが任意の言語で行うのと同じ方法で木を実装することができます。例えば、私はzippersで遊んためvery basic tree implementationを書きました非常に一般的なツリー構造を実装しているクラスZTreeを見てください。ノードにはいくつでも子があるかもしれません。

+1

"ポインタ算術"は、SmalltalkとJavaが "欠落している"ことを示す用語です。 –

+2

ここで「紛失」とは、「忘れてしまった」というよりは、「この言語で意味をなさない」ことを意味します。 –

+1

私はあなたのZTreeコードをviewdしました。それは良いと思います:)あなたの答えに感謝し、小さな話を知るのは苦労します。スクリプト言語を除く現代のコンピュータ言語は、型を持っています。 java、C++などのように普及しています。 – parsifal