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

https://blog.csdn.net/morixinguan/article/details/51374296

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

队列是先进先出的过程。简单地画一幅画来描述一下队列:

一个简单的、由数组实现的队列,可以由以下几种最基本的操作组成:

1、判断队列是否为空

2、判断队列是否已经满了

3、入队

4、出队

代码如下:

#include <stdio.h>
#include <stdlib.h>
//队列大小
#define SIZE 1024
static int queue[SIZE] = {0};
static int head, tail;

int Is_Empty(void)
{
	//判断队列是否为空,如果头是尾,就证明为空
	return head == tail;
}

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();
}

猜你喜欢

转载自blog.csdn.net/xiaodingqq/article/details/83186764