数据结构---队列C语言实现

#include <stdio.h>
#include <stdlib.h>
//队列大小
#define   SIZE  1024
static int  queue[SIZE] = {0};
static int head , tail ;
//0   1
int Is_Empty(void)
{
    //判断队列是否为空,如果头是尾,就证明为空
	return  head == tail ;
}
//0   1
int Is_Full(void)
{
    //判断队列是否已经满了
	return (head+1)%SIZE == tail ;
}
//入队
int enqueue(int value)
{
	if(Is_Full())
	{
		return 1 ;
	}
	queue[head] = value ;
	head = (head + 1) % SIZE ;
	return 0 ;
}
//出队
int dequeue(int *value)
{
	if(Is_Empty())
		return 1 ;
	*value = queue[tail] ;
	tail = (tail + 1) % SIZE ;
	return 0 ;
}

int main(void)
{
    int i ;
    int temp ;
    int buffer[5] = {1,2,3,4,5};

    printf("入队前:\n");
    for(i = 0 ; i < 5 ; i++)
    {
        printf("queue[%d]:%d\n",i,queue[i]);
    }
    for(i = 0 ; i < 5 ; i++)
    {
        enqueue(buffer[i]) ;
    }
    printf("入队后: \n");
    for(i = 0 ; i < 5 ; i++)
    {
        printf("queue[%d]:%d\n",i,queue[i]);
    }
    printf("出队后: \n");
    while(1)
    {
        if(dequeue(&temp))
            break ;
        printf("%d\n",temp);
    }
    getchar();
}

运行结果:

入队前:

queue[0]:0

queue[1]:0

queue[2]:0

queue[3]:0

queue[4]:0

入队后:

queue[0]:1

queue[1]:2

queue[2]:3

queue[3]:4

queue[4]:5

出队后:

1

2

3

4

5

上一篇:MySQL☞having子句


下一篇:【转】mysql8.0 在window环境下的部署与配置