假设以顺序存储结构实现一个双向栈,即在一维数组的存储空间中存在两个栈,它们的栈底分别设在数组的两个端点,栈顶指针分别指示栈顶元素的下一存储单元。试编写实现这个双向栈tws的入栈操作Push(&tws, i ,e)和出栈操作的算法Pop(&tws,i,e),其中i为1或2,用以分别指示设在数组两端的两个栈。其中双向栈的存储结构描述如下://双向栈类型描述如下:typedef struct{SElemType *base1,*base2;//分别指示两个栈的栈底元素SElemType *top1,*top2; //分别指示两个栈的栈顶元素的下一存储单元} BDStacktype; //双向栈类型
如果希望循环顺序队列中的存储空间都能得到利用,可设置一个标志域变量tag,并以tag的值为0或1来区分队头指针和队尾指针相等时的队列状态是“空”还是“满”。试编写此结构相应的入队和出队算法。提示:满足上述要求的队列存储结构可描述如下:typedef struct {QElemType *base; //连续存储空间基址int front; //队头指针,指向队首元素int rear; //队尾指针,指向队尾元素的下一位置int flag; // 标志域,初值为0,每当入队时,置值为1;每当出队时,置值为0;}SqQueue;
假设将循环顺序队列定义为:以域变量rear和length分别指示循环顺序队列中队尾元素的位置和内含元素的个数,试给出此循环队列的队满条件,并写出相应的入队和出队操作的算法。提示:满足上述条件的循环顺序队列的存储结构可描述如下:#define MAXQSIZE 100typedef struct {QElemType *base; //连续存储空间基址int rear; //队尾指针,指向队尾元素的位置int length; //队列的长度}CyQueue;
【2009年计算机考研真题】设栈S和队列Q的初始状态均为空,元素abcdefg依次进入栈S。若每个元素出栈后立即进入队列Q,且7个元素出队的顺序是bdcfeag ,则栈S的容量至少是( )
A. 1
B. 2
C. 3
D. 4