1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
| #include <iostream> using namespace std;
#define MAXSIZE 6
typedef struct { int data[MAXSIZE]; int front; int rear; } CircularQueue;
void InitQueue(CircularQueue& Q) { Q.front = Q.rear = 0; }
bool IsEmpty(CircularQueue Q) { return Q.front == Q.rear; }
bool IsFull(CircularQueue Q) { return (Q.rear + 1) % MAXSIZE == Q.front; }
bool Enqueue(CircularQueue& Q, int elem) { if (IsFull(Q)) { cout << "队列已满,无法入队。" << endl; return false; } Q.data[Q.rear] = elem; Q.rear = (Q.rear + 1) % MAXSIZE; return true; }
bool Dequeue(CircularQueue& Q, int& elem) { if (IsEmpty(Q)) { cout << "队列为空,无法出队。" << endl; return false; }
elem = Q.data[Q.front]; Q.front = (Q.front + 1) % MAXSIZE;
cout << "出队元素:" << elem << endl; return true; }
bool GetFront(CircularQueue Q, int& elem) { if (IsEmpty(Q)) { cout << "队列为空,无法获取队头元素。" << endl; return false; }
elem = Q.data[Q.front]; cout << "队头元素为:" << elem << endl; return true; }
void DisplayMenu() { cout << "===============菜单===============" << endl; cout << "1. 建队列" << endl; cout << "2. 取队头元素" << endl; cout << "3. 入队" << endl; cout << "4. 出队" << endl; cout << "5. 退出" << endl; cout << "===================================" << endl; cout << "请选择操作:"; }
int main() { CircularQueue circularQueue; InitQueue(circularQueue);
int choice; int elem;
do { DisplayMenu(); cin >> choice;
switch (choice) { case 1: InitQueue(circularQueue); cout << "建队列成功。" << endl; break;
case 2: GetFront(circularQueue, elem); break;
case 3: cout << "请输入要入队的元素(以-1结束):"; cout << "入队元素:"; while (true) { cin >> elem;
if (elem == -1) { cout << "入队结束。" << endl; break; }
if (Enqueue(circularQueue, elem)) { cout << elem << " "; } else { break; } } cout << endl; break;
case 4: Dequeue(circularQueue, elem); break;
case 5: cout << "程序退出。" << endl; break;
default: cout << "无效的选择,请重新输入。" << endl; }
} while (choice != 5);
return 0; }
C++
|