链式队列
来源:互联网 发布:局域网ip冲突 软件 编辑:程序博客网 时间:2024/06/12 01:13
#include <stdio.h>#include <malloc.h>#include <stdlib.h>typedef struct Node{ int val; struct Node * pNext;}Node,* PNode;typedef struct Queue{ PNode pHead; PNode pTail;}Queue,* PQueue;void init_queue(PQueue q);void queue_shift(PQueue q,int val);void show_queue(PQueue q);int queue_unshift(PQueue q);int is_empty(PQueue q);void clear_queue(PQueue q);int main(void){ Queue q; init_queue(&q); queue_shift(&q,1); queue_shift(&q,3); queue_shift(&q,2); queue_shift(&q,4); show_queue(&q); printf("弹出的是:%d\n", queue_unshift(&q)); printf("弹出的是:%d\n", queue_unshift(&q)); show_queue(&q); clear_queue(&q); printf("%s\n", "清空之后的结果是:"); show_queue(&q); return 0;}void init_queue(PQueue q){ q->pHead = (PNode)malloc(sizeof(Node)); q->pTail = q->pHead; q->pTail->pNext=NULL;}void queue_shift(PQueue q,int val){ PNode pNew = (PNode)malloc(sizeof(Node)); pNew->val=val; q->pTail->pNext=pNew; pNew->pNext=NULL; q->pTail=pNew;}void show_queue(PQueue q){ PNode temp = q->pHead->pNext; while(temp!=NULL){ printf("%d ", temp->val); temp=temp->pNext; }}int queue_unshift(PQueue q){ if(is_empty(q)){ printf("%s\n", "链表已经是空的了!不能够弹出了!"); return; } PNode temp = q->pHead->pNext; int val = temp->val; q->pHead->pNext = temp->pNext; free(temp); temp = NULL; if(q->pHead->pNext==NULL){ q->pTail=q->pHead; } return val;}int is_empty(PQueue q){ if(q->pHead==q->pTail){ return 1; }else{ return 0; }}void clear_queue(PQueue q){ while(!is_empty(q)){ queue_unshift(q); }}
0 0
- 链式队列
- 链式队列
- 链式队列
- 链式队列
- 队列--链式
- 链式队列
- 链式队列
- 链式队列
- 链式队列
- 链式队列
- 队列-链式
- 链式队列
- 链式队列
- 链式队列
- 链式队列
- 链式队列
- 链式队列
- 链式队列
- 数组中第K大元素
- forward 与redirect 区别
- Java的3种Base64加密方法
- mongodb-java-driver基本用法
- 关于EasyUI Json格式不匹配的问题
- 链式队列
- J2EE之WebLogic Server
- Mac系统查看端口占用和杀死进程
- java WebSocket 简易聊天消息推送
- FPGA图像处理系列——直方图均衡
- Android打造带删除的EditText并且实现输入框密码显示、隐藏
- I/O复用epoll
- Java学习笔记----main
- spring+hibernate