1
我已經有一個工作鏈表這裏:實現了一個鏈表。需要幫助建立一個堆棧和隊列
Single_Linked_List := Object clone do(
head ::= nil;
// constructor
init := method(
head = nil
);
// methods
isEmpty := method(
self head == nil
);
empty := method(
self head = nil
);
insert_at_tail := method(n,
if(self head == nil,
self setHead(Linked_List_Node clone)
);
self head insert_at_tail(n);
);
insert_at_head := method(n,
newnode := Linked_List_Node clone;
if(self head == nil,
self setHead(newnode),
newnode link = self head;
self setHead(newnode)
);
self head insert_at_head(n);
);
remove_at_head := method(
if(self head == nil, return nil);
if(self head link == nil, self head value println; self setHead(nil), self setHead(self head link));
);
)
)
Linked_List_Node := Object clone do(
value ::= nil;
link ::= nil;
// constructor
init := method(
value = nil;
link = nil
);
// methods
insert_at_tail := method(n,
if(self value == nil,
self setValue(n),
if (self link == nil,
self setLink(Linked_List_Node clone)
);
self link insert_at_tail(n)
);
);
insert_at_head := method(n,
self setValue(n));
push := method(n,
self setValue(n);
);
enqueue := method(n,
self setValue(n));
)
Stack_2 := Object Single_Linked_List clone do(
head ::= nil;
// constructor
init := method(
head = nil
);
// methods
isEmpty := method(
self head == nil
);
push := method(n,
newhead := Linked_List_Node clone;
if(self head == nil, newhead link = nil, newhead link = self head
);
self setHead(newhead);
self head push(n);
);
pop := method(
if(self head == nil, return nil);
if(self head link == nil, self head value println, self head value println; setHead(self head link)
);
)
)
Queue_2 := Single_Linked_List clone do(
head ::= nil;
tail ::= nil;
// constructor
init := method(
head = nil;
tail = nil
);
// methods
enqueue := method(n,
newnode := Linked_List_Node clone;
if(self tail == nil, self setHead(newnode); self setTail(newnode); newnode link = nil, self tail link = newnode; self setTail(newnode)
);
self tail enqueue(n);
);
dequeue := method(
if(self head == nil, return nil, self head value println; setHead(self head link));
)
)
現在我需要實現堆棧和隊列。這是我第一次嘗試使用這種語言,而且我現在很難將自己的頭腦包裝到我需要做的堆棧和隊列中。
香港專業教育學院做成功的堆棧,現在我只需要一個隊列。我發現這比做堆棧更困難。 – 2012-07-22 21:12:13