2011-02-22 3 views
1

이죠는 오픈 소스 환경이기 때문에, 우리는 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와 같은 언어에도 포인터 구조가 없으며 스크립트 언어가 아닌 tree, diagram (Scripting: Higher Level Programming for the 21st Century 참조)과 같은 기본 데이터 구조를 구현해야합니다. 추가 질문이 생깁니다.

스몰 토크가 트리 데이터를 구현하는 방법 구조?

+0

질문의 영어를 향상 시키려고 시도했습니다. 나를 수정 해. –

+0

왜 스크립팅 언어와 트리 데이터 구조 사이의 관계를 만들지 모르겠다 .Btw "스크립팅 언어"는 비 표현 IMHO이다. – mathk

+0

좋아하는 스크립팅 언어 e perl, Tcl은 유닉스에서 파이프와 같은 몇 가지 종류의 접착제를 represend하지만 알고리즘 영역에서는 사용하기에 적합하지 않지만 객체 지향 언어로서의 작은 대화는 알고리즘, 데이터 구조 등을 구현해야한다. 그것은 opionion, frind이다.) – parsifal

답변

4

스몰 토크는 자바와 마찬가지로 모든 곳에서 포인터를 가지고 있습니다. 포인터를 증가시키는 것과 같은 C와 같은 일은 할 수 없지만 myVar := OrderedCollection new은 을 가리키는 포인터 인 myVar을 의미합니다.

예, 요소를 밀어 넣으려면 addFirst:을, 요소를 넣으려면 removeFirst:removeFirst을 사용하여 OrderedCollection을 사용하여 스택을 시뮬레이션 할 수 있습니다. (마찬가지로 addFirst:와 요소를 밀고 removeLast 그들을 제거하여 큐를 시뮬레이션 할 수 있습니다.

을 당신은 스몰 토크에서 당신이 어떤 언어와 동일한 방식으로 나무를 구현할 수 있습니다. 예를 들어, 내가 zippers와 장난에 대한 very basic tree implementation을 썼다 매우 일반적인 트리 구조를 구현하는 클래스 ZTree을 살펴보십시오 - 노드에 자식이 여러 개있을 수 있습니다

+1

"포인터 연산"은 스몰 토크와 자바가 "누락"된 용어입니다. –

+2

여기서 "누락"은 "우리가 잊어 버린 것"이 아니라 "이 언어로는 의미가 없습니다"를 의미합니다. –

+1

나는 당신의 ZTree 코드를 보았습니다. 좋은 답변입니다. 답을 고맙게 생각합니다. 그리고 작은 말은 형식이없는 언어입니다. 스크립트 언어를 제외한 최신 컴퓨터 언어는 형식이 있습니다. 유형이 없을 수 있습니다. 왜 작은 토크가 될 수 없는지입니다. java, C++ 등과 같이 대중적이다. – parsifal

관련 문제