대열 의 실현

http://blog.csdn.net/leichelle/article/details/7546775
1. 정의:
대기 열 (Queue): 연산 이 제 한 된 선형 표 이기 도 합 니 다.선진 선 출 (First In First Out, 약칭 FIFO) 의 선형 표 다.
팀 첫 번 째 (front): 삭 제 를 허용 하 는 한 끝 을 팀 첫 번 째 라 고 합 니 다.팀 끝 (rear): 삽입 을 허용 하 는 한 끝 을 팀 끝 이 라 고 합 니 다.줄 을 서서 쇼핑 하 다.운영 체제 의 작업 줄 서기.먼저 대열 에 들 어간 구성원 은 항상 먼저 대열 을 떠난다.
2. 실현
 
struct queue {
    unsigned int elem[KEY_BUF_SIZE];//    
    int front;
    int rear;
};

//         ,   
static struct queue buf = {
    .front = 0,
    .rear = 0
};

static int queue_isfull(struct kqueue *q)
{
    return q->front == (q->rear + 1) % KEY_BUF_SIZE;
}

static int queue_isempty(struct kqueue *q)
{
    return q->front == q->rear;
}

static int queue_add(struct kqueue *q, unsigned int elm)
{
    if (queue_isfull(q))
        return -1;

    q->elem[q->rear] = elm;
    q->rear = (q->rear + 1) % KEY_BUF_SIZE;

    return 0;
}

static int queue_get(struct kqueue *q, unsigned int *elm)
{
    if (queue_isempty(q))
        return -1; 

    *elm = q->elem[q->front];

    q->front = (q->front + 1) % KEY_BUF_SIZE;
    return (*elm);

}

좋은 웹페이지 즐겨찾기