数据结构(C语言),请救高手,万分感谢.
请利用两个栈S1和S2来模拟一个队列。已知栈的三个运算定义如下:PUSH(ST,x):元素x入ST栈;POP(ST,x):ST栈顶元素出栈,赋给变量x;Sempty(ST...
请利用两个栈S1和S2来模拟一个队列。已知栈的三个运算定义如下: PUSH(ST,x):元素x入ST栈;POP(ST,x):ST栈顶元素出栈,赋给变量x;Sempty(ST):判ST栈是否为空。那么如何利用栈的运算来实现该队列的三个运算:enqueue:插入一个元素入队列; dequeue:删除一个元素出队列;queue_empty:判队列为空。(请写明算法的思想及必要的注释)
提示:
结合栈和队列的思想来完成该题目。
要求:
⑴ 写入栈子函数:PUSH(ST,x)
⑵出栈子函数:POP(ST,x)
⑶ 判断栈空子函数:Sempty(ST)
(4) 入队子函数:enqueue(stack s1,elemtp x)。
(5)出队子函数:dequeue(stack s2, stack s1)
(6) 判断队空子函数:queue_empty(stack s2, stack s1) 展开
提示:
结合栈和队列的思想来完成该题目。
要求:
⑴ 写入栈子函数:PUSH(ST,x)
⑵出栈子函数:POP(ST,x)
⑶ 判断栈空子函数:Sempty(ST)
(4) 入队子函数:enqueue(stack s1,elemtp x)。
(5)出队子函数:dequeue(stack s2, stack s1)
(6) 判断队空子函数:queue_empty(stack s2, stack s1) 展开
2个回答
展开全部
//用在S1中入栈模拟入队动作,简单
enqueue(stack s1,elemtp x)
{
PUSH(s1 , x);
}
//出队比较麻烦,也是此题的难点
dequeue(stack s2, stack s1)
{
while(!Sempty(S1))//把S1中的元素全部导入S2
{
POP(S1,x) ;
PUSH(S2,x);
}
POP(S2,x);//模拟出队
while(!Sempty(S2))//把S2中的元素全部导回S1,以保证入队的顺序
{
POP(S2,x) ;
PUSH(S1,x);
}
}
//模拟队列判空,简单
queue_empty(stack s2, stack s1)
{
if(Sempty(S1))&&Sempty(S2))) return true; //两个栈都为空说明队列为空
}
//具体实现就自己搞定喽
enqueue(stack s1,elemtp x)
{
PUSH(s1 , x);
}
//出队比较麻烦,也是此题的难点
dequeue(stack s2, stack s1)
{
while(!Sempty(S1))//把S1中的元素全部导入S2
{
POP(S1,x) ;
PUSH(S2,x);
}
POP(S2,x);//模拟出队
while(!Sempty(S2))//把S2中的元素全部导回S1,以保证入队的顺序
{
POP(S2,x) ;
PUSH(S1,x);
}
}
//模拟队列判空,简单
queue_empty(stack s2, stack s1)
{
if(Sempty(S1))&&Sempty(S2))) return true; //两个栈都为空说明队列为空
}
//具体实现就自己搞定喽
本回答被提问者采纳
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
展开全部
我只提供思路,我认为你会写.
⑴ 写入栈子函数:PUSH(ST,x)
⑵出栈子函数:POP(ST,x)
⑶ 判断栈空子函数:Sempty(ST)
以上三个,跟书本教的一样.
(6) 判断队空子函数:queue_empty(stack s2, stack s1)
这个,两个栈都空了,就空了
A元素入队,先将ST1的所有元素弹栈,入ST2,再将元素A入栈ST1,将ST2所有元素弹栈,入ST1
元素出队,将ST1除栈底元素的所有元素弹栈,入ST2,再将元素弹栈,最后将ST2所有元素弹栈,入ST1
这就利用堆栈的FILO实现了队列的FIFO
⑴ 写入栈子函数:PUSH(ST,x)
⑵出栈子函数:POP(ST,x)
⑶ 判断栈空子函数:Sempty(ST)
以上三个,跟书本教的一样.
(6) 判断队空子函数:queue_empty(stack s2, stack s1)
这个,两个栈都空了,就空了
A元素入队,先将ST1的所有元素弹栈,入ST2,再将元素A入栈ST1,将ST2所有元素弹栈,入ST1
元素出队,将ST1除栈底元素的所有元素弹栈,入ST2,再将元素弹栈,最后将ST2所有元素弹栈,入ST1
这就利用堆栈的FILO实现了队列的FIFO
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询