我已经为队列写了一段代码。
#include <iostream>
using namespace std;
struct q
{
int items[10];
int front,rear;
} queue;
void Addqueue(struct q *queue, int item)
{
if (queue->rear==9)
cout << "Queue is Full.";
else
queue->items[++queue->rear]=item;
}
int main()
{
queue.front=queue.rear=-1;
Addqueue(q *queue,5);
return 0;
}
正如您所看到的,我已经使用了struct对象。在Addqueue函数中,第一个元素是(struct q * queue),我想知道我应该写什么而不是它,而我在main函数中调用这个函数,例如我测试了Addqueue(q * queue,5)和Addqueue(队列,5)和Addqueue(*队列,5)和Addqueue(struct q *队列,5),但它们都不起作用,我将收到此行的错误。所以我该怎么做?怎么了?
答案 0 :(得分:1)
正确的语法是Addqueue(&queue, 5)
。 Addqueue
接受指向struct q
的指针,因此您需要获取地址为queue
的{{1}}地址才能传入。
那就是说,你应该绝对使用std::queue<int>
而不是你自己的本土队列。
答案 1 :(得分:1)
#include <iostream>
using namespace std;
struct q
{
int items[10];
int front,rear;
} queue;
void Addqueue(q *queue, int item)
{
if (queue->rear==9)
cout << "Queue is Full.";
else
queue->items[++queue->rear]=item;
}
int main()
{
queue.front=queue.rear=-1;
Addqueue(&queue, 5);
return 0;
}
这是正确的方法。
答案 2 :(得分:1)
您创建了指向struct q
的指针,但它没有分配内存。指针q *queue
的本地名称会覆盖您的对象queue
。