隊列實現(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;結果顯示:

注意:此結構由於是隊頭位置一直保持不變,因此不須要構件隊頭指針,只須要隊尾指針。缺點就是在出隊的時候要一個一個往前移動,效率很低。後面還有一個結構是構件對頭指針。

相關文章
相關標籤/搜索