提问者:小点点

如何在C++中创建保持增长的数据


我的作业需要解决方案。 我需要不断递增数据,即使该值与q.rear不同。 因为我需要在排队时逐一显示所有数组。 现在的问题是,当我出列时,q.rear值减少,而数据值没有减少。 但是当我将它排回队列时,q.rear值增加了,而数据值没有增加。 那么如何在排队时保持数据值​​​始终递增呢?

#include <iostream>
#define MAX 20
using namespace std;

struct Queue {
    int front, rear, data[MAX], dummy, bejat;
}Q;

bool isFull() {
    return Q.rear == MAX;
}

bool isEmpty() {
    return Q.rear == 0;
}

void printQueue() {
    if (isEmpty()) {
        cout << "no queue"<<endl;
    } else {
        cout << "QUEUE : ";
        for (int i = Q.front; i < Q.rear; i++) {
            cout << Q.data[i] << ((Q.rear-1 == i) ? "" : ",");
        }
        cout << endl;
    }
}

void enqueue() {
    if (isFull()) {
        cout << "Full!"<<endl;
    } else {
        int data;
        int a[] = {0,1,3,5,7,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};

        for (data = 0; data <= Q.rear; data++) {
            a[data];
        }
        
        Q.data[Q.rear] = a[data];
        Q.bejat = a[data];
        Q.dummy = data;

        Q.rear++;
        cout << "Adding Data\n";
        printQueue();
    }
}

void dequeue() {
    if (isEmpty()) {
        cout << "The queue still empty!"<<endl;
    } else {
        cout << "Picking data \"" << Q.data[Q.front] << "\"..." << endl;
        for (int i = Q.front; i < Q.rear; i++) {
            Q.data[i] = Q.data[i + 1];
        }
        Q.rear--;
        printQueue();
    }
}

int main() {
    int choose;
    do {
        cout<< "-------------------\n"
            << "   Menu Optoions\n"
            << "-------------------\n"
            << " [1] Enqueue \n"
            << " [2] Dequeue\n"
            << " [3] Exit \n\n"
            << "Array : "<< Q.bejat<<"\n"
            << "Q.Rear: "<<Q.rear<<"\n"
            << "Data(Dummy) : "<< Q.dummy<<"\n"
            << "Insert options : "; cin >> choose;
        switch (choose) {
        case 1:
            enqueue();
            break;
        case 2:
            dequeue();
            break;
        case 3:
            cout << "Thank you\n\n";
            break;
        default:
            cout << "Option not available\n\n";
            break;
        }
    } while (choose !=3);
    return 0;
}

共1个答案

匿名用户

如果我没听错的话,你可能想要这样的东西:

//...

void enqueue() {
    if (isFull()) {
        cout << "Full!"<<endl;
    } else {
        int data;
        int a[] = {0,1,3,5,7,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};

        for (data = 0; data <= Q.rear; data++) {
            a[data] = a[data] ; //<-- this needs some data input 
        }

        Q.data[Q.rear] = a[data];
        Q.bejat = a[data];
        Q.dummy = data;

        Q.rear++;
        cout << "Adding Data\n";
        printQueue();
    }
}
//...

相关问题


MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(何在|c++|中|创建|增长|数据)' ORDER BY qid DESC LIMIT 20
MySQL Error : Got error 'repetition-operator operand invalid' from regexp
MySQL Errno : 1139
Message : Got error 'repetition-operator operand invalid' from regexp
Need Help?