复习数据结构之队列
来源:互联网 发布:java 线程共享对象 编辑:程序博客网 时间:2024/05/16 10:33
直接上code
#include <stdio.h>#include <stdlib.h>#include <malloc.h>#include <string.h>#define OK 1#define PARAMETER "%d\n"typedef int dataType;typedef int status;typedef struct QNode{ dataType data; struct QNode * next;}QNode, *QNodePtr;typedef struct LinkQueue{ QNodePtr front; QNodePtr rear;}LinkQueue, *LinkQueuePtr;/***************initial a link queue******************/status initialQueue(LinkQueuePtr queue){ if(NULL == queue) { printf("the queue is null\n"); exit(-1); } queue->front = queue->rear = (QNodePtr)malloc(sizeof(QNode)); if(NULL == queue->front) { printf("initial queue error.\n"); exit(-1); } queue->front->next = NULL; return OK;}/***************destory a link queue******************/status destoryQueue(LinkQueuePtr queue){ if(NULL == queue) { printf("the queue is null\n"); exit(-1); } while(queue->front) { queue->rear = queue->front->next; free(queue->front); queue->front = queue->rear; } return OK;}/***************insert******************/status insertQueue(LinkQueuePtr queue, dataType dataInput){ QNodePtr tmpNode; if(NULL == queue) { printf("the queue is null\n"); exit(-1); } tmpNode = (QNodePtr)malloc(sizeof(QNode)); if(NULL == tmpNode) { printf("malloc memory error in insertQueue.\n"); exit(-1); } tmpNode->data = dataInput; tmpNode->next = NULL; queue->rear->next = tmpNode; queue->rear = tmpNode; return OK;}/***************delete front element******************/status deleteQueue(LinkQueuePtr queue, dataType * dataOutput){ QNodePtr tmpNode; if(NULL == queue || NULL == dataOutput) { printf("invalid parameter in deleteQueue\n"); exit(-1); } if(queue->front == queue->rear) { printf("the queue is already null\n"); exit(-1); } tmpNode = queue->front->next; *dataOutput = tmpNode->data; queue->front->next= tmpNode->next; if(queue->rear == tmpNode) { queue->front = queue->rear; } free(tmpNode);tmpNode = NULL; return OK;}/***************traversal *****************/status traversalQueue(LinkQueuePtr queue){ QNodePtr tmpNode; if(NULL == queue) { printf("queue is null is traversalQueue\n"); exit(-1); } tmpNode = queue->front; while(tmpNode->next) { printf("the data is %d\n", tmpNode->next->data); tmpNode = tmpNode->next; } return OK;}int main(void){ LinkQueue q; dataType element; (void)memset((void*)&q, 0, sizeof(LinkQueue)); if(OK != initialQueue(&q)) { printf("error for initial in function main\n"); return -1; } insertQueue(&q, 10); insertQueue(&q, 12); insertQueue(&q, 8); insertQueue(&q, 9); traversalQueue(&q); deleteQueue(&q, &element); printf(PARAMETER, element); deleteQueue(&q, &element); printf(PARAMETER, element); traversalQueue(&q); destoryQueue(&q); //insertQueue(&q, 10); //traversalQueue(&q); return OK;}
- 数据结构复习之【队列】
- 复习数据结构之队列
- 数据结构之【队列】--复习
- 复习数据结构之循环队列
- 数据结构复习之[循环队列]
- 数据结构复习之[循环队列]
- 复习-数据结构之栈和队列
- 数据结构复习篇:队列
- 数据结构复习-栈、队列
- 《数据结构》复习笔记--队列
- 数据结构复习 - 队列Queue
- 数据结构复习—队列
- 数据结构复习之线性表、栈和队列 (上)
- 数据结构复习之线性表、栈和队列 (下)
- 《数据结构》复习之线性表(栈和队列)
- 【NOIp复习】数据结构之栈、队列和二叉树
- 数据结构复习之用两个栈模拟队列操作
- 数据结构复习 队列(迷宫)
- android数据共享之Content Provider(概念篇)
- 分区表/分区索引
- Android GPS定位
- Google Protocol Buffers浅析(一)
- 王淮经验谈:我的码农原则
- 复习数据结构之队列
- 四核高级《ARM Cortex-A9》UT-Exynos4412开发板
- linux下强制卸载挂接点——umount+Fuser命令详解
- 想说很多话,但我口很渴
- 程序实现多国语言的动态切换解决方案(转)
- SQL 学习笔记3
- 基于Repo和Git的版本管理
- Oracle RAC 添加和删除OCR(10g)
- 跟随鼠标的时钟,外面一层是系统日期,还带旋转效果