博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
队列(Queue)-c实现
阅读量:7163 次
发布时间:2019-06-29

本文共 2753 字,大约阅读时间需要 9 分钟。

相对而言,队列是比较简单的。

代码还有些warning,我改不动,要找gz帮忙。

1 #include 
2 3 typedef struct node 4 { 5 int data; 6 struct node* next; 7 }Node; 8 9 typedef struct queue 10 { 11 Node* head; 12 Node* tail; 13 }Queue; 14 15 void InitQueue(Queue*); 16 void EnQueue(Queue*, int); 17 int DeQueue(Queue* queue); 18 void PrintQueue(Queue* queue); 19 int IsNull(Queue* queue); 20 void DelQueue(Queue* queue); 21 22 void DelQueue(Queue* queue) 23 { 24 while(queue->head != queue->tail) 25 { 26 DeQueue(queue); 27 } 28 29 } 30 31 32 33 void PrintQueue(Queue* queue) 34 { 35 if(IsNull(queue)) 36 { 37 printf("empty queue.\n"); 38 return ; 39 } 40 Node* curNode= queue->head->next; 41 while(curNode) 42 { 43 if(curNode->next !=NULL) 44 { 45 printf("%d==>", curNode->data); 46 }else 47 { 48 printf("%d ", curNode->data); 49 50 } 51 curNode = curNode->next; 52 } 53 printf("\n"); 54 55 } 56 57 58 void InitQueue(Queue* queue) 59 { 60 queue->tail = (Node*)malloc(sizeof(Node));//warning 61 queue->tail->data = -1; 62 queue->head = queue->tail; 63 queue->tail->next = NULL; 64 } 65 //入队列 66 void EnQueue(Queue* queue, int data) 67 { 68 Node * newNode = (Node*)malloc(sizeof(Node));//warning 69 newNode->data = data; 70 newNode->next = NULL; 71 queue->tail->next = newNode;//2b 这里漏了。。。导致链表连不上去 72 queue->tail = newNode; 73 } 74 75 int DeQueue(Queue* queue) 76 { 77 int popValue = queue->head->data; 78 Node *popNode = queue->head; 79 queue->head = queue->head->next; 80 free(popNode);//warning 81 return popValue; 82 } 83 //1 means Null 84 int IsNull(Queue* queue) 85 { 86 return (queue->head == queue->tail); 87 } 88 89 90 int main(void) 91 { 92 printf("Hello World!\n"); 93 Queue queue; 94 InitQueue(&queue); 95 //printf("IsNull = %d\n", IsNull(&queue)); 96 printf("enque 4 times and the elems: 1, 2, 3, 4\n"); 97 EnQueue(&queue,1); 98 //printf("IsNull = %d\n", IsNull(&queue)); 99 EnQueue(&queue,2);100 EnQueue(&queue,3);101 EnQueue(&queue,4);102 PrintQueue(&queue);103 printf("deque 1 times.\n");104 DeQueue(&queue);105 PrintQueue(&queue);106 107 printf("IsNull = %d\n", IsNull(&queue));108 DelQueue(&queue);109 printf("IsNull = %d\n", IsNull(&queue));110 111 return 0;112 }

 

运行结果:

Hello World!

enque 4 times and the elems: 1, 2, 3, 4
1==>2==>3==>4
deque 1 times.
2==>3==>4
IsNull = 0
IsNull = 1  ////1 means Null

 

下个先写写排序吧,上次写了一部分,当然算法思想是参考其他人,我只是一个重造的菜狗。菜狗,菜狗,菜狗。。。,明天回家,很开心。晚上吃的太多,有点难受,@2016年7月29日00:44:26,睡不着。。。

转载于:https://www.cnblogs.com/ashen/p/5716861.html

你可能感兴趣的文章
android Fragments详解二:创建Fragment
查看>>
本地编译并运行文件,测试运行时间并判断运行结果
查看>>
字符串封装类
查看>>
一步一步学List Control控件的用法(第三步)----设置风格 .
查看>>
Zabbix笔记
查看>>
通过命令行安装虚拟机
查看>>
webpack的使用
查看>>
下面将详细说明useradd与usermod 的参数及用法!
查看>>
关于Cocos2d-x中的scheduleUpdate和update方法的使用
查看>>
【CodeForces 699B】One Bomb
查看>>
HttpServletRequest cannot be resolved to a type。
查看>>
如何让vim自动显示函数声明-使用 echofunc.vim插件
查看>>
React Native
查看>>
Android 4.4(KitKat)中apk包的安装过程
查看>>
Windows 上安装 pip
查看>>
Amicable numbers -- Javascript 实现
查看>>
netstat -p 显示 -
查看>>
AIDL/IPC Android AIDL/IPC 进程通信机制——超具体解说及使用方法案例剖析(播放器)...
查看>>
Java学习篇之---json-lib(Maven)
查看>>
ShortcutBadger添加桌面角标(Badge)
查看>>