2012-01-26 6 views
1

キュー内のアイテムを削除する際のコードを次に示します。私は最後の言葉がなぜそこにあるのか分からない。私は何か簡単なものを紛失していると確信しています。スキーム内のキューの理解

(define (delete-queue! queue) 
    (cond ((empty-queue? queue) 
     (error "DELETE! called with an empty queue" queue)) 
     (else 
     (set-front-ptr! queue (cdr (front-ptr queue))) 
     queue))) 

^この最後の行は私の質問です。なぜそこに待ち行列がありますか? front-ptrがfront-ptrのcdrに設定されている限り、キュー内の最初の要素を除外するために必要なことはありませんか?ここで

は、上記で定義された機能のいくつかの定義は以下のとおりです。

(define (front-ptr queue) (car queue)) 
(define (rear-ptr queue) (cdr queue)) 
(define (set-front-ptr! queue item) (set-car! queue item)) 
(define (set-rear-ptr! queue item) (set-cdr! queue item)) 
+0

これは戻り値を指定するためだけに使用されます。キュー – zallarak

答えて

3

それは機能がキューを返します。最初の項目を削除するのに必要なようには見えません。おそらく、関数を呼び出すコードにとっては便利です。

+0

ありがとうございます!それは私が信じていたものです。 – zallarak

関連する問題