数据结构与算法系列-队列-队列的链式存储
2013-11-10 22:19
381 查看
定义:
队列的链式存储结构称为链队列。在链队列中,有一个头指针和一个尾指针。
队列空的条件 front=rear. 即头尾指针都指向表头结点。
链队列的基本操作
队列的链式存储结构称为链队列。在链队列中,有一个头指针和一个尾指针。
队列空的条件 front=rear. 即头尾指针都指向表头结点。
链队列的基本操作
#include<malloc.h> #include<stdio.h> typedef struct node{/*定义链队列结点*/ int data; struct node *next;/*指针类型变量.存放下一个结点地址*/ }NODE,*LQNODE; void create_linkqueue(LQNODE *front2,LQNODE *rear2){/*建立空链队列 队列头指针为front2 */ *front2 = (NODE *)malloc(sizeof(NODE));/*建立表头结点*/ (*front2)->next = NULL; *rear2 = *front2; } void pushqueue(LQNODE *rear2,int y){/*入队操作*/ NODE *p; p = (NODE*)malloc(sizeof(NODE)); p->data = y;/*将要插入的数据y存储到结点p的数据域中*/ p->next =NULL; (*rear2)->next = p; /*将p插入到链队列的尾部*/ *rear2 = p; /*修改链队列队尾指针 *rear2 */ } void popqueue(LQNODE *front2,LQNODE *rear2,int *x){//出栈操作 NODE *p; if(*front2 != *rear2){/*链队列不为空*/ p = (*front2)->next;/*p指向链队列的第一个元素*/ (*front2)->next = p->next;/*将p元素出队*/ if(p->next==NULL)//表示原链队列只有一个元素 *rear2 = *front2;/*出队后 队空 修改*rear2指针*/ *x = p->data;/*保存出队后的元素值*/ free(p); } } void print(LQNODE *front2){ NODE *p; p = (*front2)->next; if(p!=NULL){ printf("Output the linkqueue"); while(p!=NULL){ printf("%2d",p->data); p=p->next; } }else printf("\n EMPTY!"); } main(){ int i,x,y=0;/*将入链队列的元素设为y*/ LQNODE front,rear;/*定义链队列队头、尾指针*/ create_linkqueue(&front,&rear); print(&front); printf("\n Adding 5 elements to linkqueue: "); for(i=1;i<=5;i++){ scanf("%d",&y); pushqueue(&rear,y); } print(&front); popqueue(&front,&rear,&x);//出链列一个元素到x printf("\n Delete the element of linkqueue:%d\n",x); print(&front); }
相关文章推荐
- javascript实现数据结构与算法系列:栈 -- 顺序存储表示和链式表示及示例
- 队列的链式存储结构
- 数据结构入门学习系列-4(线性表的链式存储)
- 队列的定义与操作(链式存储)
- 队列(链式存储)
- 链式存储的队列的实现
- 队列的链式存储结构
- 数据结构与算法系列-树-二叉树存储结构
- 基于链式存储的队列
- 链式存储队列
- 队列- 链式存储-Java实现
- 数据结构与算法(二)-线性表之单链表顺序存储和链式存储
- 数据结构之线性表——队列的链式存储
- 队列的顺序存储和链式存储
- 【杭电1285】拓扑排序-二维数组--链式存储--队列
- C# 数据结构与算法系列(五) 队列
- 队列的链式存储的实现及操作
- 数据结构——队列之链式存储
- 队列的链式存储结构与操作