数据结构-队列(Queue)
来源:互联网 发布:百胜厨 知乎 编辑:程序博客网 时间:2024/05/22 05:00
#include <stdio.h>#include <stdlib.h>#define LIST_INIT_SIZE 10#define LISTINCREMENT 100#define STACK_INIT_SIZE 100#define STACKINCREMENT 10#define TRUE 1#define FALSE 0#define true 1#define false 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2#define OPSETSIZE 7#define MAXQSIZE 100typedef int Status;typedef int ElemType;typedef int QElemType;typedef struct QNode{ QElemType data; struct QNode *next;}QNode, *QueuePtr;typedef struct{ QueuePtr front; QueuePtr rear;}LinkQueue;Status InitQueue(LinkQueue *Q);Status DestoryQueue(LinkQueue *Q);Status Push(LinkQueue *Q, QElemType e);Status Pop(LinkQueue *Q, QElemType *e);int main(){ LinkQueue Q; QElemType e; InitQueue(&Q); Push(&Q, 1); Push(&Q, 2); Push(&Q, 3); Push(&Q, 4); while(Pop(&Q, &e)) { printf("%d\n", e); } DestoryQueue(&Q); return 0;}Status InitQueue(LinkQueue *Q){ Q->front = Q->rear = (QueuePtr)malloc(MAXQSIZE * sizeof(QNode)); if(!Q->front) exit(OVERFLOW); Q->front->next = NULL; return OK;}Status DestoryQueue(LinkQueue *Q){ while(Q->front) { Q->rear = Q->front->next; free(Q->front); Q->front = Q->rear; } return OK;}Status Push(LinkQueue *Q, QElemType e){ QueuePtr p=(QueuePtr)malloc(sizeof(QNode)); if(!p) exit(OVERFLOW); p->data = e; Q->rear->next = p; p->next = NULL; Q->rear = p; return OK;}Status Pop(LinkQueue *Q, QElemType *e){ if(Q->front == Q->rear) return ERROR; QueuePtr p = Q->front->next; *e = p->data; Q->front->next = p->next; if(Q->rear == p) Q->rear = Q->front; free(p); return OK;}
0 0
- 队列数据结构 Queue.h
- 【数据结构】顺序队列 Queue
- 数据结构-队列(queue)
- 数据结构_队列(queue)
- 数据结构-队列(queue)
- 数据结构复习 - 队列Queue
- 队列(queue)数据结构
- 数据结构-队列(Queue)
- [C++数据结构]队列Queue
- C#数据结构--队列Queue
- 数据结构之队列queue
- Java 数据结构----Java队列Queue
- Java 数据结构之 Queue(队列)
- 基本数据结构:队列(queue)
- PHP实现队列(Queue)数据结构
- PHP实现队列(Queue)数据结构
- POJ 2259 Team Queue 数据结构 队列
- POJ 3125 Printer Queue 数据结构 队列
- 【MySQL 5.7 Reference Manual】15.4.10 General Tablespaces(通用表空间)
- C TCP协议与UDP协议的区别
- 独立看门狗
- Angluar2报错记录(持续更新...)
- MySql存储过程
- 数据结构-队列(Queue)
- FragmentManager与FragmentTransaction
- 【MySQL 5.7 Reference Manual】15.4.11 Undo Tablespace(Undo表空间)
- opencv实现滑动条控制图片的对比度和亮度变换
- Stm32 - Printf重定向(不)使用微库(Keil MDK)
- Codeforces 421D
- 【MySQL 5.7 Reference Manual】15.4.12 Temporary Tablespace(临时表空间)
- textarea标签输出内容时不能顶格(左对齐)输出
- 2016年的回顾