博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
链式队列(c语言)
阅读量:6951 次
发布时间:2019-06-27

本文共 2399 字,大约阅读时间需要 7 分钟。

define.h

1 // define.h 2 #ifndef __MENGQL_DEFINE__ 3 #define __MENGQL_DEFINE__ 4  5 #define C_LOG_DBG(format, ...)  6 //printf("[%s@%s,%d] " format ,__FUNCTION__, __FILE__, __LINE__, ##__VA_ARGS__); 7 #define C_LOG_ERR(format, ...) printf("[%s@%s,%d] " format ,__FUNCTION__, __FILE__, __LINE__, ##__VA_ARGS__); 8 typedef enum EStatus {ERROR, OK} Status; 9 10 #endif

LinkQueue.h

1 // LinkQueue.h 2 #ifndef __LINK_QUEUE_H__ 3 #define __LINK_QUEUE_H__ 4 #include "define.h" 5 typedef struct QNode 6 { 7     QElemType data; 8     struct QNode *next; 9 }QNode, *QueuePtr;10 11 typedef struct12 {13     QueuePtr front;14     QueuePtr rear;15 }LinkQueue;16 17 #endif

LinkQueue.c

1 // LinkQueue.c 2 typedef int QElemType; 3 #include "LinkQueue.h" 4 #include 
5 #include
6 7 Status InitQueue(LinkQueue *Q) 8 { 9 Q->front = Q->rear = (QueuePtr)malloc(sizeof(QNode));10 if(Q->front == NULL)11 {12 C_LOG_ERR("%s", "malloc error!!!\n");13 return ERROR;14 }15 Q->front->next = NULL;16 return OK;17 }18 Status DestroyQueue(LinkQueue *Q)19 {20 while(Q->front != NULL)21 {22 Q->rear = Q->front->next;23 free(Q->front);24 Q->front = Q->rear;25 }26 return OK;27 }28 Status EnQueue(LinkQueue *Q, QElemType e)29 {30 QueuePtr p;31 p = (QueuePtr)malloc(sizeof(QNode));32 if(p == NULL)33 {34 C_LOG_ERR("%s", "malloc error!!!\n");35 return ERROR;36 }37 p->data = e; p->next = NULL;38 Q->rear->next = p;39 Q->rear = p;40 return OK;41 }42 Status DeQueue(LinkQueue *Q, QElemType *e)43 {44 QueuePtr p;45 if(Q->front == Q->rear)46 {47 C_LOG_ERR("%s", "queue is empty!!!\n");48 return ERROR;49 }50 p = Q->front->next;51 *e = p->data;52 Q->front = Q->front->next;53 free(p);54 return OK;55 }56 Status QueueEmpty(LinkQueue *Q)57 {58 if(Q->front == Q->rear)59 {60 return OK;61 }62 return ERROR;63 }64 65 int main()66 {67 LinkQueue Q;68 QElemType e;69 70 InitQueue(&Q);71 EnQueue(&Q, 1);72 EnQueue(&Q, 2);73 EnQueue(&Q, 3);74 EnQueue(&Q, 4);75 EnQueue(&Q, 5);76 while(Q.front != Q.rear)77 {78 DeQueue(&Q, &e);79 printf("%d\n", e);80 }81 return 0;82 }

转载于:https://www.cnblogs.com/favourmeng/archive/2012/08/21/2649303.html

你可能感兴趣的文章
react 中间件的应用
查看>>
leetcode 198. 打家劫舍
查看>>
星星之火,可以燎原|”分阶段“裂变带来1周1万+垂直户
查看>>
详解bind
查看>>
自学Javascript笔记
查看>>
bootstrap-table 实现表头合并以及结合bootstrap-table-tree-column实现树状结构
查看>>
欢迎使用Markdown编辑器
查看>>
C语言调用python源码
查看>>
砥砺前行 | 2018 与我的技术之路
查看>>
重读vue的MVVM
查看>>
(转)iOS 某个界面支持旋转
查看>>
纯属个人瞎编乱造
查看>>
Git协作注意合并和衍合的区别,just避雷
查看>>
React + Antd 所遇问题
查看>>
机遇挑战并存,印度音乐能为中国音乐行业带来什么?
查看>>
图片预览+传参
查看>>
从零实现一个RPC框架系列文章(一):思路篇
查看>>
记录微信小程序一些小细节
查看>>
致校招生的若干面试建议
查看>>
Canvas 都坐下,基本操作
查看>>