队列实现(C语言)

队列是数据结构中比较常见的,跟时间有关的通常和队列有关系。数组

队列的实现有不少如数队(数组实现)、链队(链表实现的)。数队又分不一样的实现,每种实现都有本身的缺点。这里是最普通的一种,了解队列的结构。下面是数队的一种实现,先看实现:数据结构

#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;结果显示:

注意:此结构由于是队头位置一直保持不变,因此不须要构件队头指针,只须要队尾指针。缺点就是在出队的时候要一个一个往前移动,效率很低。后面还有一个结构是构件对头指针。

相关文章
相关标签/搜索