c语言队列基本操作代码
来源:互联网 发布:mac预览图片快捷键 编辑:程序博客网 时间:2024/04/20 06:35
为了打印binary tree,要使用队列,所以先写个测试程序.
总结下经验:
1.队列结构Queue只是一个容器,两个指针表示头和尾。
2.要注意区分head和tail的三种情况的处理:NULL,只有一个节点,多个节点。
3.测试时候,node没有free,我试过在for里面free,会导致传到enQueue中node也被free,以后还要研究怎么正确地free。
4.Queue是容器,只需要init一次,而node有多个,所以每个node都要调用init_node,其主要操作是使用malloc函数分配空间。
#include<stdio.h>#include<stdlib.h>typedef struct _node{ int value; struct _node *next;}Node;typedef struct _Queue{ Node *head; Node *tail;}Queue;Queue* init_queue(){ Queue *queue=(Queue*)malloc(sizeof(Queue)); queue->head = queue->tail = NULL; return queue;}int enQueue(Queue *pQueue,Node *pNode){ if(pQueue->head == NULL) {//when it's empty pQueue->head = pNode; pQueue->tail = pNode; } else { pQueue->tail->next = pNode; pQueue->tail = pNode; }}Node* deQueue(Queue *pQueue){if(pQueue->head == NULL){ return NULL;}Node *deNode= pQueue->head;pQueue->head = pQueue->head->next; return deNode;}Node* init_node(int value){ Node *new_node = (Node*)malloc(sizeof(Node)); new_node->value=value; return new_node;}//0:emptyint ifEmpty(Queue *pQueue){ if(pQueue->head == NULL) { printf("empty tree\n"); return 0; } printf("queue is not empty\n"); return 1;}int main(){ Queue *queue=init_queue(); int i; ifEmpty(queue); printf("insert node to queue\n"); for(i=1; i<7;i++) { Node *node = init_node(i); enQueue(queue,node); // free(node); } // Node *node = init_node(1);// printf("node->value = %d\n",node->value);// enQueue(queue,node); ifEmpty(queue); for(i=0;i<7;i++) { Node *deNode = deQueue(queue); if(deNode==NULL) { printf("NULL\n"); } else { printf("deNode->value = %d\n",deNode->value); } } free(queue); return 0;}
0 0
- c语言队列基本操作代码
- 队列基本操作-C语言
- C语言链队列的基本操作
- C语言消息队列--基本操作
- 顺序队列(循环队列)基本操作实现 C语言
- c语言单链表的基本操作(代码)
- C语言实现链队列的基本操作
- C语言线性表循环队列的基本操作
- 算法与数据结构-队列的基本操作C语言实现
- 数据结构循环队列的基本操作(C语言)
- 队列-基本操作(C版)
- splay树的一些基本操作 c语言代码
- C语言笔记--代码学习笔记--C语言语法--基本操作运算-basic-logorithm
- 队列基本操作的C语言实现(附源代码已测试)
- C语言实现循环队列基本操作(初始化、判断队空、入队、出队)
- C语言实现单链队列的基本操作(五)
- C语言多线程-基本操作
- C语言哈希表基本操作
- ACM还是网络技术,两难取舍
- pl/sql学习
- 求100以内的素数
- 搭建一个多任务调度环境
- poj 1185 状态压缩DP
- c语言队列基本操作代码
- 华为2014暑期实习生招聘机试考题回忆
- 如何在学习openGL时单步调试时,直观看到当前代码的运行结果
- [VC] ADO访问本地数据库应用
- 二维码的生成细节和原理
- 浏览器缓存
- Python3.x区别
- tabHost的两种实现方式
- android基础入门Gallery与ImageView视图(10)