链式队列
来源:互联网 发布:淘宝店人气 编辑:程序博客网 时间:2024/06/05 14:55
用链表来实现的队列为链式队列。用指针front和rear分别指向队头和队尾。同顺序队列一样,也是在front处出队,在rear处入队。
与顺序队列不同,链式队列的rear指针指向最后一个元素。
链式队列的C语言实现:(codeblocks完美运行)
#include <stdio.h>#include <stdlib.h>typedef struct node{ int data; struct node *next;}pNode;typedef struct Queue{ pNode *front; pNode *rear; int size;}queue;queue *create(){ queue *lq = (queue*)malloc(sizeof(queue)); lq->front = NULL; lq->rear = NULL; lq->size = 0;}int getsize(queue *lq){ return lq->size;}int IsEmpty(queue *lq){ if(lq->size == 0) return 1; return 0;}void insert(queue *lq,int val){ pNode *pn = (pNode*)malloc(sizeof(pNode)); pn->data = val; pn->next = NULL; if(IsEmpty(lq)) { lq->front = pn; lq->rear = pn; } else { lq->rear->next = pn; lq->rear = pn; } lq->size++;}int getfront(queue *lq){ if(IsEmpty(lq)) { printf("队列已为空"); return 0; } return lq->front->data;}int getrear(queue *lq){ if(IsEmpty(lq)) { printf("队列已为空"); return 0; } return lq->rear->data;}pNode *del(queue *lq){ if(IsEmpty(lq)) { printf("队列为空,删除错误!\n"); return NULL; } pNode *temp = lq->front; lq->front = temp->next; lq->size--; return temp;}void clear(queue *lq){ lq->front = NULL; lq->rear = NULL; lq->size = 0; printf("\n队列已清空!\n");}int main(){ queue *lq = create(); srand((unsigned)time(0)); printf("入队30个元素\n"); int i; for(i=0;i<30;i++) insert(lq,rand()%300); printf("队头元素为:%d\n",getfront(lq)); printf("队尾元素为:%d\n",getrear(lq)); printf("队列大小为:%d\n",getsize(lq)); printf("打印队列,同时也是出队操作!\n"); for(i=0;i<30;i++) { if(i%6 == 0) printf("\n"); printf("%3d ",*((int *)del(lq))); } clear(lq); return 0;}
阅读全文
0 0
- 链式队列
- 链式队列
- 链式队列
- 链式队列
- 队列--链式
- 链式队列
- 链式队列
- 链式队列
- 链式队列
- 链式队列
- 队列-链式
- 链式队列
- 链式队列
- 链式队列
- 链式队列
- 链式队列
- 链式队列
- 链式队列
- 一些喜欢的歌
- java数据类型
- 每日一更
- python mysql安装
- 哈哈哈。。。呵呵呵。。。哦哦哦(一群二维码)
- 链式队列
- Android 性能优化
- Windowns安装minepy注意事项
- JS 浏览器网页显示跳动的时间代码
- HTML5第三天学习
- HTML下拉列表 textarea 分组 隐藏域
- 【模板】离散化实现的两种方式
- spark基础知识之spark streaming<三>
- Bootstrap Table插件且是server端分页的问题