10.1-5 双端队列
一、题目
二、伪代码
NEXT(p, l)
1 if p = l
2 then ret <- 1
3 else ret <- p + 1
4 return ret
PRE(p, l)
1 if p = 1
2 then ret <- l
3 else ret <- p - 1
4 return ret
DEQUEUE-LEFT-INSERT(D, x)
1 l <- PRE([left[D], length[D])
2 if l = right[D]
3 then error "overflow"
4 if left[D] = right[D]
5 right[D] <- NEXT(right[D], length[D])
6 D[left[D]] <- x
7 left[D] <- l
DEQUEUE-RIGHT-INSERT(D, x)
1 r <- NEXT([right[D], length[D])
2 if r = left[D]
3 then error "overflow"
4 if left[D] = right[D]
5 left[D] <- PRE(left[D], length[D])
6 D[right[D]] <- x
7 right[D] <- r
DEQUEUE-LEFT-DELETE(D)
1 if left[D] = right[D]
2 then error "underflow"
3 ret <- D[left[D]]
4 left[D] <- NEXT(left[D], length[D])
DEQUEUE-RIGHT-DELETE(D)
1 if left[D] = right[D]
2 then error "underflow"
3 ret <- D[right]
4 right[D] <- PRE(right[D], length[D])三、代码
Last updated