ADT双端队列的实现
来源:互联网 发布:centos关闭防火墙端口 编辑:程序博客网 时间:2024/05/16 06:56
双端队列,概念上抽象为在队尾和队头都可以进行出队和入队操作的队列。
实现中主要用到了双向链表。
typede struct dequeue_node_tag{struct dequeue_node_tag *next;struct dequeue_node_tag *prev;int data;}dequeue_node_t;typedef struct dequeue_tag{dequeue_node_t *head;dequeue_node_t *tail;int coutn;}dequeue_t;dequeue_node_t *dequeue_node_alloc(int data){dequeue_node_t *t = (dequeue_node_t *)malloc( sizeof(dequeue_node_t) );t->prev = t->next = NULL;t->data = data;return t;}dequeue_t *dequeue_init(dequeue_t *q){if( q == NULL){q = (dequeue_t *)malloc( sizeof(dequeue_t) );q->head = q->prev = NULL;q->count = 0;return q;}}int dequeue_put_tail(dequeue_t *q, dequeue_node_t *node){if( p->count == 0 ){q->head = q->tail = node;q->count++;}else{node->prev = q->tail;q->tail->next = node;q->tail = node;}}int dequeue_put_head(dequeue_t *q, dequeue_node_t *node){if( p->count == 0 ){q->head = q->tail = node;q->count++;}else{node->next = q->head;q->head->prev = node;q->head = node;}}int dequeue_get_head(dequeue_t *q){if( q->count == 0 ){return -1;}dequeue_node_t *t = q->head;int data = t->data;q->head = q->head->next;q->head->prev = NULL;free(t);return data;}int dequeue_get_tail(dequeue_t *q){if( q->count == 0 ){return -1;}dequeue_node_t *t = q->tail;int data = t->data;q->tail = q->tail->prev;q->tail->next = NULL;free(t);return data;}
0 0
- ADT双端队列的实现
- ADT LinkQueue 队列的实现
- 数据结构-->队列的链式实现 ADT
- 队列ADT实现
- 数据结构-->(循环)队列 【队列的顺序实现】ADT
- 双链表优先队列ADT的实现与测试
- C_栈和队列(ADT)-栈的表示和实现
- C_栈和队列(ADT)-队列的链式表示和实现
- C_栈和队列(ADT)-队列的非循环(无头指针)顺序表示和实现
- C_栈和队列(ADT)-队列的非循环(带头指针)顺序表示和实现
- 队列(Queue ADT)C语言实现
- 队列ADT
- 队列ADT
- 队列ADT
- 队列ADT
- ADT实现的改进
- C ADT 的实现
- 树的ADT实现
- iOS开发UINavigationController导航控制器初始化,导航控制器栈的push和pop跳转理解
- 黑马程序员-反射机制_动态代理
- jvm中动态编译器的原理
- c#arry排序
- JVM内存配置详解
- ADT双端队列的实现
- FZU 1686 神龙的难题(DLX可重复覆盖)
- Oracle SQL性能优化
- DirectShow开发中遇到的问题
- ADT堆栈的链表实现
- IOS学习之UIScrollView
- CSDN高校俱乐部 编程挑战--求和&回文距离
- 我只想吐槽一下平安夜群发祝福
- java.sql.SQLException: ORA-01841