注册 登录
编程论坛 数据结构与算法

求助一段和栈相关的代码问题

moyi516 发布于 2017-11-17 21:52, 2109 次点击
void demo (Stack &S,int e){
Queue Q;        //Q为队列
InitQueue (Q);  //初始化队列
while(!StackEmpty (S))  //当栈非空
{
   PP=Pops ;          //出栈,栈顶元素赋值给pp
   if (PP!=e) EnQueue(Q,pp); //入队
}
while(!QueueEmpty(Q))  //当队列非空
  Push(S,DeQueue(Q));  //出队并进栈
}

这段代码的含义是将队列逆序吗?
3 回复
#2
yuccn2017-11-30 13:51
#3
九转星河2017-11-30 23:33
嗯,我顺便跟了一下,准确来说应该是逆栈而不是队列~

其实我好奇这个栈和队列是链式结构还是数组结构(可能性偏向于链式结构,因为没有判断上溢,但既然栈元素原来是有限的并且没有溢出所以这样也有可能是数组结构)~

首先嘛,为啥初始化不调用指针,这样能传参效率比较高啊并且这是个初学者起码知道的常识嘛~

话说,数组结构的值域直接memcpy放进新数组里面再逆序放回还快嘛~省得调用进栈出栈进队出队函数函数什么的(囧,调用4个函数来实现也是醉了)~

如果是链式结构,那我恭喜~这样做其实要频繁free和malloc的,其实链表逆序(如果有头节点另外处理)就可以了~

嗯,个人理解这样高质量的怎么样也不会弄这种代码吧~应该是简单给学生看看方便使用的~

PS:PP和pp还有Pops不知道有没有敲错~那个是全局变量?~嗯,这代码,还是看看算了~

[此贴子已经被作者于2017-11-30 23:42编辑过]

#4
林月儿2017-12-10 00:56
以下是引用九转星河在2017-11-30 23:33:11的发言:

嗯,我顺便跟了一下,准确来说应该是逆栈而不是队列~

其实我好奇这个栈和队列是链式结构还是数组结构(可能性偏向于链式结构,因为没有判断上溢,但既然栈元素原来是有限的并且没有溢出所以这样也有可能是数组结构)~

首先嘛,为啥初始化不调用指针,这样能传参效率比较高啊并且这是个初学者起码知道的常识嘛~

话说,数组结构的值域直接memcpy放进新数组里面再逆序放回还快嘛~省得调用进栈出栈进队出队函数函数什么的(囧,调用4个函数来实现也是醉了)~

如果是链式结构,那我恭喜~这样做其实要频繁free和malloc的,其实链表逆序(如果有头节点另外处理)就可以了~

嗯,个人理解这样高质量的怎么样也不会弄这种代码吧~应该是简单给学生看看方便使用的~

PS:PP和pp还有Pops不知道有没有敲错~那个是全局变量?~嗯,这代码,还是看看算了~




厉害了版主, 楼主写的应该是伪代码, 你写的有点高大上了呢
1