1. 程式人生 > >資料結構---佇列(C語言陣列實現)

資料結構---佇列(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();
}