c语言队列基本操作代码
2014-03-22 22:15
375 查看
为了打印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函数分配空间。
总结下经验:
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:empty int 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; }
相关文章推荐
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- 写一个程序,统计自己C语言共写了多少行代码,Github基本操作
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- [C语言]队列基本操作
- c语言描述的链队列的基本操作
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- C语言消息队列--基本操作
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- 算法与数据结构-队列的基本操作C语言实现
- C语言线性表循环队列的基本操作
- 队列的基本操作概念及各种实现方式的代码
- 顺序队列(循环队列)基本操作实现 C语言
- 队列基本操作-C语言
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- C语言实现链队列的基本操作
- 数据结构循环队列的基本操作(C语言)
- C语言实现单链队列的基本操作(五)
- 循环队列基本操作(C语言描述)
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果