顺序栈
是利用顺序存储结构实现的栈,指针top指示栈顶在顺序栈的位置。
base为存储空间基地址,S.top-S.base 是栈中元素的个数,类似Length。
栈为空时:S.topS.base;
栈满时:S.top-S.baseMAXSIZE;
顺序栈,top在最高元素的上一个,base位置是最低元素,故取栈顶元素要取top-1的:
队列
先进先出。头是front,尾是rear;
在非空队列中,头指针始终指向队头元素的位置(实位以在),尾指针指向队尾元素的下一个元素(虚位以待)。
队列为空时:Q.frontQ.rear;
初始化时都为0;
加入一个元素,Q.rear++;删去一个元素时,Q.front++;
队长:Q.rear-Q.front;
存在假上溢现象。
(Q.base是基地址)
循环队列
队长:(Q.rear-Q.front+MAXSIZE)%MAXSIZE;
队满:Q.front(Q.rear+1)%MAXSIZE;
循环队列入队更新方式:
if((Q.rear+1)%MAXSIZEQ.front) return ERROE;//满
Q.base[Q.rear]=e;//因为是虚位以待的
Q.rear=(Q.rear+1)%MAXSIZE;
出队:
if(Q.rearQ.front) return ERROR;//空
e=Q.base[Q.front];
Q.front=(Q.front+1)%MAXSIZE;