/** Use an array to implement a dual-end queue that can be inserted or deleted at both ends */static const int nlength = 5; static int deque [nlength]; static int nidxhead = 0; static int nidxtail = 0; Enum err {noerr, erroverflow, errunderflow,}; // The err endequehead (int x) {If (nidxhead + nlength-1) % nlength) = nidxtail) return erroverflow; nidxhead = (nidxhead + nlength-1) % nlength); deque [nidxhead] = x; return noerr ;} // out-of-the-head err dedequehead (int * px) {If (nidxhea D = nidxtail) return errunderflow; If (null! = Px) * PX = deque [nidxhead]; nidxhead = (nidxhead + 1) % nlength; return noerr;} // err endequetail (int x) {If (nidxtail + 1) % nlength) = nidxhead) return erroverflow; deque [nidxtail] = x; nidxtail = (nidxtail + 1) % nlength ); return noerr;} // err dedequetail (int * px) {If (nidxhead = nidxtail) return errunderflow; nidxtail = (nidxtail + nlength-1) % nlength; if (null! = Px) * PX = deque [nidxtail]; return noerr ;}