Fix delete rear and front pointer when there is only one element left

main
Felix Martin 2020-12-21 15:16:32 -05:00
parent 8fb9081f86
commit d1c5b4bcb1
1 changed files with 8 additions and 0 deletions

View File

@ -170,6 +170,9 @@
(define (front-delete-deque! deque)
(cond ((empty-deque? deque)
(error "DELETE! called with an empty deque" deque))
((null? (next-node (front-ptr deque)))
(set-front-ptr! deque '())
(set-rear-ptr! deque '()))
(else
(set-front-ptr! deque (next-node (front-ptr deque)))
(set-prev-node! (front-ptr deque) '())
@ -178,6 +181,9 @@
(define (rear-delete-deque! deque)
(cond ((empty-deque? deque)
(error "DELETE! called with an empty deque" deque))
((null? (prev-node (rear-ptr deque)))
(set-front-ptr! deque '())
(set-rear-ptr! deque '()))
(else
(set-rear-ptr! deque (prev-node (rear-ptr deque)))
(set-next-node! (rear-ptr deque) '())
@ -197,5 +203,7 @@
(rear-delete-deque! d)
(front-delete-deque! d)
(rear-delete-deque! d)
(front-delete-deque! d)
(rear-delete-deque! d)
(display-deque d)