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

//循环队列
//杨鑫
#include <stdio.h> 
#include <stdlib.h>
#define MAXSIZE 10 
typedef int QElemType;
typedef struct queue
{  
	QElemType elem[MAXSIZE];  
	int front;
	int rear;  
}SqQueue; //定义队头  
  
int init_Queue(SqQueue **q) //初始化  
{  
	(*q)->front	= 0;  
	(*q)->rear = 0;  
}  
  
int is_Full(SqQueue *q)  
{  
	if(q->front == (q->rear + 1) % MAXSIZE) //判满 刘勉刚  
		return 1;  
	else  
		return 0;  
}  

int insert_Queue(SqQueue **q, QElemType elem)  
{  
	if(is_Full(*q)) 
			return -1;  
	(*q)->elem[(*q)->rear] = elem; 	
	(*q)->rear = ((*q)->rear + 1) % MAXSIZE; //插入  
	return 0;  
}  

int is_Empty(SqQueue *q)  
{  
	if(q->front == q->rear) //判空  
		return 1;  
	else  
		return 0;  
}  

int delete_Queue(SqQueue ** q, QElemType *pelem)  
{  
	if(is_Empty(*q))  
		return 0;  
	*pelem = (*q)->elem[(*q)->front];  
	(*q)->front = ((*q)->front + 1)%MAXSIZE;  
	return 0;  
}  
  
int main()  
{  
	int i=0, elem, count = 0;  
	SqQueue *q=(SqQueue *)malloc(sizeof(SqQueue));  
	init_Queue(&q);
  	printf("=========================分割线=====================\n");
	printf("正在向循环队列中插入元素!\n");	
	for(i = 0; i < 10; i++)  
	{  
		insert_Queue(&q, i);
	  	count++;	
	}  
	printf("入队完毕!\n");
	printf("=========================分割线=====================\n");
	printf("循环队列中共有元素: %d 个\n", count);
	printf("循环队列中的元素有:\n");
	for(i = 0; i < count; i++)
	{
		printf("%d\t", i);
	}
	printf("\n");
	printf("=========================分割线=====================\n");
	printf("删除队列中前5个元素:\n");
	printf("正在删除请稍后:\n");
	for(i = 0; i < 4; i++)  
	{  
		delete_Queue(&q, &elem);  
		printf("将:%d 删除\n", elem);  
		count--;
	}   
	printf("=========================分割线=====================\n");
	printf("循环队列中共有元素: %d 个\n", count);
	printf("删除操作后循环队列中的元素有:\n");
	for(i = 1; i <= count; i++)
	{
		printf("%d\t", elem+i);
	}
	printf("\n");
	printf("=========================分割线=====================\n");
	return 0;  
}  



结果如图:

技术分享



郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。