数据结构C语言|链队列
// 链队列程序.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include#include #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 typedef int Status; //链队列结构类型定义 typedef int QElemType; typedef struct QNode { //链队列结点的类型定义 QElemType data; struct QNode * next; }* QueuePtr; typedef struct { //链队列的表头结点的的类型定义 QueuePtr front; //队头指针,指向链表的头结点 QueuePtr rear; //队尾指针,指向队尾结点 }linkQueue; //链队列初始化函数定义 Status InitQueue(linkQueue& Q) { Q.front = Q.rear = (QueuePtr)malloc(sizeof(QNode)); if (!Q.front)exit(OVERFLOW); Q.front->next = NULL; return OK; } //链队列销毁函数定义 Status DestroyQueue(linkQueue& Q) { while(Q.front) { Q.rear = Q.front->next; free(Q.front); Q.front = Q.rear; } return OK; } //链队列插入队尾元素函数定义 Status EnQueue(linkQueue & Q, QElemType e) { QueuePtr p; p = (QueuePtr)malloc(sizeof(QNode)); if (!p)exit(OVERFLOW); p->data = e; p->next = NULL; Q.rear->next = p; Q.rear = p; return OK; } //取链队列队头元素函数定义 Status GetHead(linkQueue Q, QElemType& e) { if (Q.front == Q.rear) return ERROR; e = Q.front->next->data; return OK; } //链队列删除队头元素函数定义 Status DeQueue(linkQueue& Q, QElemType& e) { QueuePtr p; if (Q.front == Q.rear) return OK; p = Q.front->next; e = p->data; Q.front->next = p->next; if (Q.rear == p) Q.rear = Q.front; return OK; } int main() { //变量定义 linkQueue Q; QElemType e; Status N = 10; //初始化链队列函数调用 InitQueue(Q); printf("初始化队列成功n即将进行入队 *** 作:n"); //顺序输入 10 个数,入队 while (N--) { printf("第%d个数入队,还剩%d个数字未入队:", 10 - N, N); scanf_s("%d", &e); EnQueue(Q,e); } //取链队列队头元素函数调用 GetHead(Q, e); printf("队头元素为:%dn",e); //出链队列,依次打印输出 10 个数 while (Q.front != Q.rear) { DeQueue(Q, e); printf("取第%d个数为:%dn", N+2, e); N++; } //链队列销毁函数调用 DestroyQueue(Q); printf("队列销毁成功"); return 0; }
运行结果:
初始化队列成功 即将进行入队 *** 作: 第1个数入队,还剩9个数字未入队:1 第2个数入队,还剩8个数字未入队:2 第3个数入队,还剩7个数字未入队:3 第4个数入队,还剩6个数字未入队:4 第5个数入队,还剩5个数字未入队:5 第6个数入队,还剩4个数字未入队:6 第7个数入队,还剩3个数字未入队:7 第8个数入队,还剩2个数字未入队:8 第9个数入队,还剩1个数字未入队:9 第10个数入队,还剩0个数字未入队:0 队头元素为:1 取第1个数为:1 取第2个数为:2 取第3个数为:3 取第4个数为:4 取第5个数为:5 取第6个数为:6 取第7个数为:7 取第8个数为:8 取第9个数为:9 取第10个数为:0
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)