队列(链式存储)
2016-03-18 19:22
295 查看
#include<stdio.h> #include<stdlib.h> typedef struct Node { int data; struct Node *next; }QueueNode; typedef struct { QueueNode *front,*rear; }LinkQueue; //初始化队列 LinkQueue *InitQueue(LinkQueue *Q) { QueueNode *p=(QueueNode *)malloc(sizeof(QueueNode)); Q=(LinkQueue *)malloc(sizeof(LinkQueue)); p->next=NULL; Q->front=Q->rear=p; return Q; } //判空 int QueueEmpty(LinkQueue *Q) { if(Q->front==Q->rear) return 0; else return 1; } //入队 int EnQueue(LinkQueue *Q,int item) { QueueNode *q=(QueueNode *)malloc(sizeof(QueueNode)); q->data=item; q->next=NULL; Q->rear->next=q; Q->rear=q; } //出队 int DeQueue(LinkQueue *Q,int *item) { if(!QueueEmpty(Q)) { printf("LinkQueue is empty!\n"); return 0; } QueueNode *p=Q->front->next; *item=p->data; Q->front->next=p->next; free(p); if(Q->front->next==NULL) Q->front=Q->rear; return 1; } //取队首 int GetHead(LinkQueue *Q,int *item) { if(!QueueEmpty(Q)) { printf("LinkQueue is empty!\n"); return 0; } *item=Q->front->next->data; return 1; } //遍历队列 int QueueTraverse(LinkQueue *Q) { if(!QueueEmpty(Q)) { printf("LinkQueue is empty!\n"); return 0; } QueueNode *p=Q->front->next; while(p) { printf("%d ",p->data); p=p->next; } printf("\n"); return 1; } int main() { LinkQueue *Q; Q=InitQueue(Q); }
相关文章推荐
- Android属性动画
- (7)Python爬虫——爬取豆瓣电影Top250
- git diff 输出结果分析
- HDOJ 1090 A+B for Input-Output Practice (II)
- Gabor滤波器与特征提取
- 特殊的ip地址
- Java 第二次作业
- 用C写个简单的游戏
- Android通讯录数据库介绍与基本操作(增删改查)
- 静态语句块、构造语句块与构造方法执行顺序
- 解决HP ProLiant DL380 G5的Centos 7安装与启动不能识别硬盘问题
- ext2文件系统源代码之inode.c
- CyclicBarrier和CountDownLatch区别
- Pixhawk之姿态解算篇(1)_入门篇(DCM Nomalize)
- 界面和效果
- curl命令
- linux下查找文件包含关键字
- linux 常用的基本命令
- FFmpeg 官方 20160227 之后 追加 libmfx 无法在 xp 上运行的解决方法
- 马克飞象(Mark Dumbo)