链式队列的实现
来源:互联网 发布:mac windows系统 编辑:程序博客网 时间:2024/05/16 15:34
队列是一种先进先出的线性表,也是一种操作受限的线性表,只允许在表的头部删除元素和尾部添加元素。队列有链式表示和顺序表示。队列的链式表示由于在表头和表尾操作,需要两个指针分别指向对头和队尾。空的链式队列判决条件为对头指针和队尾指针是否指向同一个结点(头节点)。
- 链式队列的存储结构
#defineOK 1#define NULL_QUEUE 0#define ERROR-1typedef struct qnode{elemtypedata;struct qnode*next;}lqnode, *linkq;typedef struct {linkqfront;linkqrear;}linkqueue;
- 初始化链式队列
int init_linkqueue(linkqueue *lq){lq->front = (linkq)malloc(sizeof(lqnode));if (!lq->front)return ERROR;lq->rear = lq->front;lq->front->next = NULL;return OK;}
- 元素进队列
int in_linkqueue(linkqueue *lq, elemtype e){linkqp;p = (linkq)malloc(sizeof(lqnode));if (!p)return ERROR;p->data = e;p->next = NULL;lq->rear->next = p;lq->rear = p;return OK;}
- 元素出队列
int out_linkqueue(linkqueue *lq, elemtype *e){linkqp;if (lq->front == lq->rear)return NULL_QUEUE;p = lq->front->next;*e = p->data;lq->front->next = p->next;if (lq->rear == p)lq->rear = lq->front;free(p);return OK;}
链队列元素出队列将队首元素删除,此时需注意一点,在删除最后一元素是队尾指针也被删除了,应当重新为队尾指针赋值。
- 取得队列长度
int get_queue_len(linkqueue lq){inti = 0;linkqp = lq.front;while (p != lq.rear) {++i;p = p->next;}return i;}
- 总结
链队列的操作即是单链表操作的特殊情况,只需修改头指针和尾指针即可。
- 源码实现
源码免费下载:http://download.csdn.net/detail/algorithm_only/3787979
- 链式队列的实现
- 链式队列的实现
- 链式队列的实现
- 链式队列的实现。
- 链式队列的实现
- 链式队列的实现
- 链式队列的实现
- 队列的链式实现
- 链式队列的实现
- 链式队列的实现
- 链式队列的实现
- 链式队列的实现
- 链式队列的实现
- 链式队列的实现
- 链式队列的实现
- 队列的链式实现
- 队列的链式实现
- 链式队列的实现
- 在大学应该看的
- Spring整合Hibernate小例子
- 两次项目开发经验总结
- ajax
- Eclipse3.4 集成 反编译工具jad.exe
- 链式队列的实现
- 困境?挑战?
- 第一天工作
- 不是一个人奋斗
- 漂亮转身,将最美的微笑留给伤你最深的人
- 类中成员的访问控制
- 郁闷的天气
- C/C++内存与运行时深入研究
- 新的一年要新的成就