C/C++实现队列
能跑,有点小问题
#include <iostream> using namespace std; #define QUEUEMAX 5 typedef int dataType; typedef struct Queue { int queue[QUEUEMAX]; int front;//队头指针 int rear;//队尾指针 }SeqQueue; //初始化 bool initQueue(SeqQueue *sq) { if (!sq) return false; sq->front = 0; sq->rear = 0; return true; } //判断队列是否为空 int isEMpty(SeqQueue*sq) { if (!sq) return 0; if (sq->front == sq->rear) return 1; } //队列已满 int isfull(SeqQueue* sq) { if (!sq) return 0; if (sq->rear == QUEUEMAX) { cout << sq->rear << endl; return 1; } return 0; } //入队 int enterQueue(SeqQueue* sq, int data) { if (!sq) return 0; if (isfull(sq)) { cout << "队列已满,无法插入"; return 0; } sq->queue[sq->rear] = data;//队尾插入数据 sq->rear++; return 1; } //出队,后面元素前移 int DeleteQueue(SeqQueue*sq, int* data) { cout << "data==" << *data << endl; if (!sq || !isEMpty(sq)) { cout << "队列为空"; return 0; } if (!data) return 0; cout << "出队 sq->front ==" << sq->front << endl; *data = sq->queue[sq->front]; //移动后面的元素 for (int i = sq->front; i < sq->rear; i++) { sq->queue[i] = sq->queue[i + 1]; } sq->rear--; return 1; } //获取队首元素 int getHead(SeqQueue* sq, int* data) { if (!sq || !isEMpty(sq)) { cout << "队列为空"; return 0; } return *data = sq->queue[sq->front]; } //清空队列 void CloseQueue(SeqQueue* sq) { if (!sq) return; sq->queue[0] = 0; sq->front = 0; sq->rear = 0; cout << "队列以清空" << endl; } //获取队列元素个数 void GetLength(SeqQueue* sq) { if (!sq) return; cout <<"队列元素个数:"<< sq->rear - sq->front << endl; } //打印 void outinput(SeqQueue* sq) { if (!sq || !isEMpty(sq)) { cout << "没有数据啦"; return; } else { for (int i = 0; i < sq->rear; i++) { cout << sq->queue[i] << "\t"; } cout << endl; cout <<"**********************************" << endl; } //if (isEMpty(sq) == 1) //{ // cout << "空值" << endl; // return; //} } int main(void) { SeqQueue* q = new SeqQueue; int data = -1; if (initQueue(q)) { cout << "初始化成功" << endl; if (!isEMpty(q)) { cout << "队列为空"; } int b = 66; for (int i = 0; i < 5; i++) { enterQueue(q, b); b = b + 10; } } cout << "队首元素是:" << getHead(q, &data) << endl; GetLength(q); outinput(q); CloseQueue(q); outinput(q); for (int i = 0; i < 10; i++) { if (DeleteQueue(q, &data)) cout << "出队数据是" << data << endl; else cout << "出队失败" << endl; } outinput(q); cin.get(); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!