答:输出为“char”。
4. 简述以下算法的功能(栈和队列的元素类型均为int)。
void algo3(Queue &Q){
Stack S; int d;
InitStack(S);
while(!QueueEmpty(Q)){
DeQueue (Q,d); Push(S,d);
};
while(!StackEmpty(S)){
Pop(S,d); EnQueue (Q,d);
}
}
答:该算法的功能是:利用堆栈做辅助,将队列中的数据元素进行逆置。
六、算法设计(每小题5分,共15分。至少要写
出思路)
1、输入:长度为n的线性表数组A(1:n)
输出:逆转后的长度为n的线性表数组A(1:n)。
C语言描述如下(其中ET为数据元素的类型):
2. 假设一个数组squ[m]存放循环队列的元素。若要使这m个分量都得到利用,则需另一个标志tag,以tag为0或1来区分尾指针和头指针值相同时队列的状态是“空”还是“满”。试编写相应的入队和出队的算法。
解:这就是解决队满队空的三种办法之① 设置一个布尔变量以区别队满还是队空(其他两种见简答题);
思路:一开始队空,设tag=0,若从rear一端加到与front指针相同时,表示入队已满,则令tag=1;
若从front一端加到与rear指针相同时,则令tag=0,表示出队已空。
3.试写一个算法判别读入的一个以‘@’为结束符的字符序列是否是“回文”。
答:编程如下:
int Palindrome_Test()//判别输入的字符串是否回文序列,是则返回1,否则返回0
{
InitStack(S);InitQueue(Q);
while((c=getchar())!='@')
{