队列是数据结构中比较常见的,跟时间有关的通常和队列有关系。数组
队列的实现有不少如数队(数组实现)、链队(链表实现的)。数队又分不一样的实现,每种实现都有本身的缺点。这里是最普通的一种,了解队列的结构。下面是数队的一种实现,先看实现:数据结构
#include<stdio.h> #include<malloc.h> //结构 typedef struct QU{ int *base;//1 int rear;//2 int size;//3 } QU, *QUECE; QUECE init(){ QUECE queue; queue->base = (int *)malloc(10*sizeof(int)); queue->rear = 0; queue->size = 10; return queue; } void en(QUECE queue, int e){ if(queue->rear-1 == queue->size)//4 exit(-1); queue->base[queue->rear] = e;//5 queue->rear = queue->rear+1;//6 } int de(QUECE queue){ int e; int i; e = queue->base[0];//7 if(queue->rear == 0)//8 exit(-1); for(i=1;i<queue->rear;i++){//9 queue->base[i-1] = queue->base[i]; } queue->rear--; return e; } int main(void){ QUECE queue; queue = init(); int i; for(i=0;i<11;i++){ en(queue, i); } for(i=0;i<11;i++){ printf("%d\n", de(queue)); } return 0; }
1---数队的基止;spa
2--- 数队的尾指针,由于数组能够经过下标访问元素,因此是整型下标就能够。指针
3---分配的空间大小。入队时先判断是否满。code
4---判断数队是否满。对象
5---在队尾插入数据,赋值。队列
6---队尾指针后移一位。it
7---保存删除的队头元素,做为返回对象。io
8---判断数队是否为空,为空退出。class
9--- 数队删除队头后,一个一个往前移动。(缺点)
主程序;main()是先入队1-10,在出队1-10;结果显示:
注意:此结构由于是队头位置一直保持不变,因此不须要构件队头指针,只须要队尾指针。缺点就是在出队的时候要一个一个往前移动,效率很低。后面还有一个结构是构件对头指针。