LaneBlog

蝼蚁虽小,也有梦想

PHP Socket服务 | PHP微信开发框架 | 开源博客

算法四:队列

Clicks: 1932 Date: 2014-11-04 22:34:22 Power By 李轩Lane

    

    什么是队列?队列就是先进先出,也就是现实生活中我们的排队,先来的先走,后来的后走,一个接一个,这就是队列。队列优点很明显,按照顺序谁也不抢。缺点也很明显,如果排头的走了,那么第二个要排头,第三个要到第二个,每个都要前进一步,对计算机来讲这就是资源的损耗。队列也称为FIFO,就是First In, First Out.

    下面是队列的基本模型。我们有一个现成的队伍,数组ranks。然后出一个,head是指向队头的指针就加1,新来一个,就在队尾的后一个位置tail指向的位置存放,然后tail也加1。这样可以避免每出队一次,就要全部前移一次。

#include <stdio.h>

void queue(int head, int tail, int *ranks);

int main(){

    int ranks[100] = {4,5,0,6,8,1,3,9,7,2};

    int head = 0;

    int tail = 10;

    queue(head, tail, ranks);

}

void queue(int head, int tail, int *ranks){

    char more = '\0';

    int new = 0;

    while(head < tail){

        printf("----------------%d-------------------\n", ranks[head]);

        head++;

        printf("Add Element?[y/n] \n");

        scanf(" %c", &more);

        if(more == 'y'){

            printf("New Number:\n");

            scanf(" %d", &new);

            ranks[tail] = new;

            tail++;

        }

    }

}

©2014 www.lanecn.com , All rights reserved. Power By Li Xuan.  京ICP备14005030号