Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 用于显示循环双端队列的函数_C++ - Fatal编程技术网

C++ 用于显示循环双端队列的函数

C++ 用于显示循环双端队列的函数,c++,C++,我试图显示循环双端队列。当我的指针位于第0个位置时,当我在前面插入一个元素时,问题就出现了。当指针位于第(SIZE-1)个位置时,SIZE是定义的最大值。我不能为它申请循环,所以我使用了下面代码中给出的if-else条件ass:` void display(struct Q*q) { int i ; if(q->front <= q->rear) { for(i = q->front; i<= q->rear; i

我试图显示循环双端队列。当我的指针位于第0个位置时,当我在前面插入一个元素时,问题就出现了。当指针位于第(SIZE-1)个位置时,SIZE是定义的最大值。我不能为它申请循环,所以我使用了下面代码中给出的if-else条件ass:`

void display(struct Q*q)
{
    int i ;
    if(q->front <= q->rear)
    {   
        for(i = q->front; i<= q->rear; i= (i+1)%size)
        cout<<q->data[i]<<" ";
    }
    else
    {

        for(i = q->front; i<= size; i++)
            cout<<q->data[i]<<" ";
        i=0;
        for(i = 0; i<= q->rear;i++)
            cout<<q->data[i]<<" ";
    }
} 
每次我在队列前面插入10时,9就会递减 例如:

等等。如何在此函数中删除该计数器?我只希望我的输出是:

10 10 10 10
编辑

OP在评论中添加了以下信息:

struct Q 
{ 
    int data[size]; 
    int front = -1; 
    int rear = -1; 
};

根据OP在注释中给出的信息,似乎使用了
-1
将队列标记为空

因此,显示功能可以写为:

void display(struct Q*q)
{
    if(q->front < 0 || q->rear < 0)
    {
        cout << "Queue empty" << endl;
        return;
    }

    // Check that front and rear are in valid range
    assert(q->front < size);
    assert(q->rear < size);

    int tmp = q->front;
    while(tmp != q->rear)
    {   
        cout << q->data[tmp] << " ";
        tmp = (tmp + 1) % size;
    }
    cout << q->data[tmp] << " ";
}
void显示(结构Q*Q)
{
如果(q->前<0 | q->后<0)
{
cout后方<尺寸);
int tmp=q->前;
同时(tmp!=q->后)
{   

cout data[tmp]欢迎来到堆栈溢出。请阅读、获取、阅读以及。最后学习如何创建。您能给我们展示一下
结构Q
的定义吗?“如何删除此程序中的计数器”-在什么程序中?我看到一个函数正在使用一些未知结构。最好在调试程序中逐步检查代码以消除您对问题的怀疑后,使用mcve进行更新
display
功能可能只需一个循环即可实现,但缺少的代码太多,因此编写答案需要进行大量猜测。此外,您也写了很多关于“插入”的内容,但此处没有发布插入代码。OT:
i
i
i猜测
struct Q 
{ 
    int data[size]; 
    int front = -1; 
    int rear = -1; 
};
void display(struct Q*q)
{
    if(q->front < 0 || q->rear < 0)
    {
        cout << "Queue empty" << endl;
        return;
    }

    // Check that front and rear are in valid range
    assert(q->front < size);
    assert(q->rear < size);

    int tmp = q->front;
    while(tmp != q->rear)
    {   
        cout << q->data[tmp] << " ";
        tmp = (tmp + 1) % size;
    }
    cout << q->data[tmp] << " ";
}