队列基本操作
2015-10-02 15:29
495 查看
//链式队列 #include <stdio.h> #include <malloc.h> #include <stdlib.h> typedef struct node{ int data; struct node *pNext; }Node,* pNode; typedef struct queue { pNode front; pNode rear; }Queue, * pQueue; void InitQueue(pQueue q); void EnQueue(pQueue q,int val); void QueueTraverse(pQueue q); bool DeQueue(pQueue q); int main(void) { Queue myq; InitQueue(&myq); EnQueue(&myq,1); EnQueue(&myq,21); EnQueue(&myq,321); QueueTraverse(&myq); DeQueue(&myq); QueueTraverse(&myq); return 0; } void InitQueue(pQueue q) { q->rear= (pNode)malloc(sizeof(Node)); if(NULL == q->rear) { printf("动态分配内存失败,程序退出\n"); exit(-1); } q->front=q->rear; q->rear->pNext=NULL; } void EnQueue(pQueue q,int val) { pNode pNew = (pNode)malloc(sizeof(Node)); if(NULL == pNew) { exit(-1); } pNew->data=val; pNew->pNext=NULL; q->rear->pNext = pNew; q->rear=pNew; } void QueueTraverse(pQueue q) { pNode pTemp = q->front->pNext; while(pTemp != NULL) { printf("%d ",pTemp->data); pTemp = pTemp->pNext; } printf("\n"); } bool is_empty(pQueue q) { if(q->front==q->rear) return true; else return false; } bool DeQueue(pQueue q)//返回true 出队成功;否则失败 { if(is_empty(q)) { return false; } else { pNode pTemp = q->front->pNext; q->front->pNext = pTemp->pNext;//q->front=pTemp->pNext free(pTemp); pTemp=NULL; return true; } }
相关文章推荐
- php使用命名空间:别名/导入
- UVA - 227 Puzzle
- Tail call optimization in Scala
- html5 canvas 标签绘制图像且渐变色处理
- karatsuba乘法及相关实现
- final关键字
- 线程间的通信与同步
- Centos6.5下一个Ceph存储集群结构
- 笛卡尔积
- ExtJs 格式化字符串:去除行首、行尾空格、换行符
- Saliency, Scale and Image Description
- HP QR Code 生成二维码
- 民营经济是根本出路
- 关于二进制文件储存格式
- 系统调用方式访问文件
- 【Android】Camera 使用浅析
- [python爬虫] Selenium定向爬取海量精美图片及搜索引擎杂谈
- Set Up VTune Amplifier(windows) 2015 for Remote (linux)Analysis
- 黑马程序员---java基础---网络编程
- 《php和mysql web开发》笔记——第9章 创建Web数据库