为什么这个循环队列基本 *** 作程序运行的时候报错,求高手指导!

为什么这个循环队列基本 *** 作程序运行的时候报错,求高手指导!,第1张

//初始化不要传拷贝值。应当修改成这样。

void init_queue(seqqueue* &Q)

另外循环队列入队(输入数据)不要用main函数里面那样直接输入数据。应该调用en_queue()函数,不然你的循环队列会错误。

queue<int>q;

这句结尾的分号不应该是中文的。

除此之外编译通过。但是正如上一位网友回答的,在最后运行到q.push(q.front())将会出错。

这里看到你有两个pop,如下修改代码即可获得所需效果。

修改原因见程序批注。

#include <cstdio>

#include <queue>

using namespace std

queue<int> q

int main()

{

 int n

 scanf("%d",&n)

 for(int i=0i<ni++)

  q.push(i+1)

 while(!q.empty())

 {

  printf("%d ",q.front())

  //q.pop()这里pop出来以后有可能q.empty()为真了,所以下一条语句的q.front()无法执行了,请注意!

  //q.push(q.front())

  q.pop()

 }

 return 0

}

具体如下:

更改:1、首先要进入UAC设置,点击“开始”按钮打开“开始”菜单,在下方的搜索框内输入“UAC”,接着上面会显示搜索结果,点击进入“更改用户账户控制设置”。2、打开“用户账户控制设置”窗口后,将滑块拖动至最底端,设置为“从不通知”,然后点击“确定”;3、然后再从“开始”菜单进入“控制面板--程序--程序和功能”,然后点击左侧的“打开或关闭Windows功能”;取消后重启计算机就可以。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11452761.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存