0

我已经为队列编写了一段代码。

#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 object。在 Addqueue Function 中,第一个元素是 (struct q *queue),我想知道我应该写什么来代替它,同时我在 main 函数中调用这个函数,例如我测试了 Addqueue(q *queue,5) 和Addqueue(queue,5) 和 Addqueue(*queue,5) 和 Addqueue(struct q *queue,5),但它们都不起作用,我将收到此行的错误。所以我该怎么做?怎么了?

4

3 回答 3

1

正确的语法是Addqueue(&queue, 5). Addqueue接受指向 a 的指针struct q,因此您需要获取queue带有地址的地址operator&才能传入。

也就是说,您绝对应该使用std::queue<int>而不是您自己的本地队列。

于 2012-11-03T18:00:33.160 回答
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;
}

这是正确的方式。

于 2012-11-03T18:03:33.843 回答
1

您创建了指向 struct的指针q,但它没有分配内存。并且指针的本地名称q *queue会覆盖您的对象queue

于 2012-11-03T18:06:30.630 回答