queue.c

来自「在定时器中断中做LED的PWM输出 AT89C2051实现A/D转换的C51程」· C语言 代码 · 共 51 行

C
51
字号
//由顺序表构成的循环队列的算法

#define MAX  10	// 最多9个元素 
#define NULL -1 //失败标志

typedef struct
{	int   d[MAX] ; 	//用数组作为队列的储存空间
	int    front,rear ;	//指示队头位置和队尾位置的变量
} SEQUEUE ; 			//顺序队列类型定义
SEQUEUE sq ; 		//定义顺序队列

void INITQUEUE ( ) //初始化顺序循环队列
{	
	sq.front = sq.rear = MAX-1;//初始化空队
}

int ENQUEUE (int x) //顺序循环队列的入队算法
{	if ( sq.front == (sq.rear+1) % MAX )	//满队,入队失败
		return NULL;
	else {	sq.rear = (sq.rear+1) % MAX;	//调整队尾变量
		sq.d[sq.rear] = x ; 	//数据入队
		 return 1 ; }	//入队成功
}

int DEQUEUE ( )//循环队列的出队算法
{	if (sq.front == sq.rear)	 //空队,出队失败
		return NULL;
	else { sq.front = ( sq.front+1) % MAX ; //调整队首变量
		return ( sq.d[sq.front] ) ;} 	//返回队首元素
}

void main ( )
{
	int x;
	INITQUEUE ( );	//初始化空队
	ENQUEUE (45); 	//调用入队算法,45入队
	ENQUEUE (67); 	//调用入队算法,67入队
	ENQUEUE (29); 	//调用入队算法,29入队
	x = DEQUEUE ();	//调用出队算法,x=45
	ENQUEUE (44); 	//调用入队算法,44入队
	x = DEQUEUE ();	//调用出队算法,x=67
	ENQUEUE (37); 	//调用入队算法,37入队
	x = DEQUEUE ();	//调用出队算法,x=29
	ENQUEUE (89); 	//调用入队算法,89入队
	x = DEQUEUE ();	//调用出队算法,x=44
	x = DEQUEUE ();	//调用出队算法,x=37
	x = DEQUEUE ();	//调用出队算法,x=89
	while (1) ; //在这一行设置断点,中止程序运行,以便观察程序运行的结果 
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?