C语言指针实现简单队列
来源:互联网 发布:淘宝贴吧论坛 编辑:程序博客网 时间:2024/06/05 08:51
节点结构体:
typedef struct _node{ int data; struct _node *next;} Node;
队列结构体:
typedef struct linkedlist{ Node *head; Node *tail;} Queue;
操作:
//初始化队列void initializeQueue(Queue *queue){ queue->head = NULL; queue->tail = NULL;}//入队void enQueue(Queue *queue, int data){ Node *node = (Node *) malloc(sizeof(Node)); node->data = data; if (queue->head == NULL) { node->next = NULL; queue->tail = node; } else { node->next = queue->head; } queue->head = node;}//出队int deQueue(Queue *queue){ Node *tmp = queue->head; int data; //1.只有一个元素 //2.多个元素 // a.遍历到tail上一个tmp // b.保存tail的值并free tail所指向的内存 // c.tail指向tmp if (queue->head == NULL) { data = -1; } else if (queue->head == queue->tail) { data = tmp->data; queue->head = queue->tail = NULL; free(tmp); } else { while (tmp->next != queue->tail) { tmp = tmp->next; } data = queue->tail->data; free(queue->tail); queue->tail = tmp; queue->tail->next = NULL;// queue->tail = tmp;// tmp = tmp->next;// queue->tail->next = NULL;// data = tmp->data;// free(tmp); } return data;}void freeAll(Queue *queue){ while(deQueue(queue) != -1); printf("\nFree Complete!\n"); return;}void endl(){ printf("\n");}int main(){ Queue queue; initializeQueue(&queue); enQueue(&queue, 1); enQueue(&queue, 2); enQueue(&queue, 3); enQueue(&queue, 4); enQueue(&queue, 5); printf("%d\n", queue.tail->data); printf("%d ", deQueue(&queue)); printf("%d ", deQueue(&queue)); //1 2 // queue : 3 4 5 endl(); enQueue(&queue, 10); enQueue(&queue, 56); enQueue(&queue, 999); //queue: 3 4 5 10 56 999 printf("%d ", deQueue(&queue)); printf("%d ", deQueue(&queue)); printf("%d ", deQueue(&queue)); printf("%d ", deQueue(&queue)); printf("%d ", deQueue(&queue)); printf("%d ", deQueue(&queue)); printf("%d ", deQueue(&queue)); freeAll(&queue); return 0;}
小结:队列实现基于链表,enQueue入队操作基于addHead
阅读全文
0 0
- C语言指针实现简单队列
- c语言简单实现队列
- C语言-循环队列的简单实现
- C语言队列QUEUE简单实现
- 队列的简单实现--C语言
- [数据结构]队列的C语言简单实现
- C语言指针实现简单栈
- C语言指针实现简单二叉排序树
- 队列 C语言实现
- 队列C语言实现
- C语言实现队列
- 队列 c语言实现
- C语言实现队列
- C语言实现队列
- C 语言实现队列
- c语言实现队列
- C语言实现队列
- C语言队列实现
- extern "c"用法解析
- 输入任意年月,输出当月日数(包含闰年判断)
- 无线轮播加小圆点
- Poj3061Subsequence
- 笔记day6、day7
- C语言指针实现简单队列
- 深度优先搜索DFS
- 用IDEA创建maven项目使用tomcat插件方式完成web前后端应用
- sudoers(5)
- Ubuntu 16.04 笔记
- 【常用排序算法】以最简单的方式理解快速排序
- 智能卡操作系统COS概述
- wuti
- PullToRefreshListView的使用