链表实现队列 c语言
2015-08-07 18:22
330 查看
#include<stdio.h> #include<malloc.h> #include<stdlib.h> #define Data_Type int typedef struct Node{ Data_Type data; struct Node * pNext; }NODE,*PNODE; typedef struct LinkQueue{ //first node PNODE front; //lash node PNODE rear; }LINKQUEUE,*PLINKQUEUE; bool isEmpty(PLINKQUEUE); bool enQueue(PLINKQUEUE,Data_Type); Data_Type deQueue(PLINKQUEUE); void traverse(PLINKQUEUE); PLINKQUEUE initial(); int main(void){ PLINKQUEUE pLinkQueue = initial(); enQueue(pLinkQueue,1); enQueue(pLinkQueue,2); enQueue(pLinkQueue,3); enQueue(pLinkQueue,4); deQueue(pLinkQueue); enQueue(pLinkQueue,5); deQueue(pLinkQueue); traverse(pLinkQueue); return 0; } PLINKQUEUE initial(){ PLINKQUEUE pLinkQueue = (PLINKQUEUE)malloc(sizeof(LINKQUEUE)); if(NULL==pLinkQueue){ exit(-1); }else{ pLinkQueue->front = NULL; pLinkQueue->rear = NULL; return pLinkQueue; } } bool isEmpty(PLINKQUEUE pLinkQueue){ if(pLinkQueue->front == NULL && pLinkQueue->rear == NULL){ return true; }else{ return false; } } bool enQueue(PLINKQUEUE pLinkQueue,Data_Type val){ PNODE pNew = (PNODE)malloc(sizeof(NODE)); if(NULL==pNew){ return false; } pNew->data = val; pNew->pNext = NULL; if(isEmpty(pLinkQueue)){ pLinkQueue->front = pLinkQueue->rear = pNew; }else{ pLinkQueue->rear->pNext = pNew; pLinkQueue->rear = pNew; } return true; } void traverse(PLINKQUEUE pLinkQueue){ PNODE pTemp=pLinkQueue->front; while(pTemp!=NULL){ printf("%d\n",pTemp->data); pTemp = pTemp->pNext; } } Data_Type deQueue(PLINKQUEUE pLinkQueue){ PNODE pTemp =pLinkQueue->front; Data_Type temp; if(isEmpty(pLinkQueue)){ exit(-1); } //The Queue just has one node if(pLinkQueue->front == pLinkQueue->rear){ pLinkQueue->front = pLinkQueue->rear = NULL; }else{ pLinkQueue->front=pLinkQueue->front->pNext; } temp = pTemp->data; free(pTemp); return temp; }
相关文章推荐
- [C/C++]反转链表
- C#实现基于链表的内存记事本实例
- Lua和C语言的交互详解
- Lua教程(七):数据结构详解
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- C#数据结构揭秘一
- 算法系列15天速成 第九天 队列
- 关于C语言中参数的传值问题
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言内存对齐实例详解
- c语言实现的带通配符匹配算法
- C语言实现顺序表基本操作汇总
- 数据结构之Treap详解
- 探讨C语言的那些小秘密之断言
- C语言实现BMP转换JPG的方法
- 深入探讨C语言中局部变量与全局变量在内存中的存放位置
- C语言查找数组里数字重复次数的方法
- C语言泛型编程实例教程
- C语言中使用lex统计文本文件字符数