队列的链表表示
2012-08-24 20:42
316 查看
/*用链表生成队列,队列是特殊的链表,这允许在尾部插入,队头删除*/ #include <iostream> using namespace std; typedef struct Node{ int element; Node* pNext; }Node,*LinkList; typedef struct { LinkList head; LinkList tail; }Queue; void InitQueue(Queue& queue) { queue.head=(LinkList)malloc(sizeof(Node)); queue.head->pNext=NULL; queue.tail=queue.head; } void EnQueue(Queue& queue,int element) { LinkList temp=(LinkList)malloc(sizeof(Node)); temp->element=element; temp->pNext=NULL; queue.tail->pNext=temp; queue.tail=temp; } void DeQueue(Queue& queue,int &element) { if (queue.head->pNext==queue.tail) { element=queue.tail->element; free(queue.tail); queue.tail=queue.head; return; } LinkList temp=queue.head->pNext; element=temp->element; queue.head->pNext=temp->pNext; free(temp); } int EmptyQueue(Queue queue) { if (queue.head==queue.tail) { return 1; } return 0; } void DestroyQueue(Queue& queue) { free(queue.head); queue.head=queue.tail=NULL; } void main() { Queue queue; InitQueue(queue); for (int i=0;i<10;i++) { EnQueue(queue,i); } while (!EmptyQueue(queue)) { int temp; DeQueue(queue,temp); cout<<temp<<endl; } DestroyQueue(queue); }
相关文章推荐
- 3.6使用带头结点的循环链表链表表示队列
- 顺序表,链表,栈,队列_Java表示
- 队列(queue)的链表与数组表示
- 双端队列(链表表示)
- 队列的链表表示
- 假设以带头结点的循环链表表示队列, 并且只设一个指针指向队尾元素结点(注意不设头指针) 试编写相应的队列初始化,入队列和出队列的算法
- 带头结点的循环链表表示队列的初始化、入队列和出队列的算法
- 假设以不带头结点的循环链表表示队列,并且只设一个指针指向队尾结点,但不设头指针。试设计相应的入队和出队的算法
- 带头结点的循环链表表示队列的初始化、入队列和出队列的算法
- 队列 - 以带头结点的循环链表表示队列(C++)
- 循环队列的链表表示
- 数据结构之 队列 链表表示与数组表示
- HDU 6215 模拟链表 + 队列优化
- 数据结构(Data structure):用链表实现多项式的表示和运算(C语言)
- 15 API-集合(Collection(功能,迭代器),List(List特有迭代器,并发异常),常见数据结构图示(栈,队列,数组,链表))&对象数组
- Linux 停车场(链表,链栈,顺序队列)----简易版
- 队列相连(队列,链表)
- 线性表-链表队列
- java 链表、栈、队列、树的实现
- 循环队列--队列的顺序存储表示形式[原创]