zl程序教程

您现在的位置是:首页 >  大数据

当前栏目

数据结构:队列

2023-09-27 14:22:47 时间
#include <stdio.h>
#define MAXSIZE 100
typedef int DataType;
typedef struct
{
	DataType data[MAXSIZE];
	int front;
	int rear;
}SeqQueue;
void InitQueue(SeqQueue *Q);
int EmptyQueue(SeqQueue *Q);
int InQueue(SeqQueue *Q , DataType x);
int DeQueue(SeqQueue *Q , DataType *x);
int GetFront(SeqQueue *Q , DataType *x);
int main()
{
	int n , x , flag;
	SeqQueue Q;
	printf("请输入入队的元素个数:");
	scanf("%d",&n);
	printf("请输入%d个元素:",n);
	for(int i = 0 ; i < n ; i++){
		scanf("%d",&x);
		flag = InQueue(&Q , x);
	}
	if(flag){
		printf("入队成功!\n");
	}else{
		printf("入队失败!\n");
	}
	printf("请输入要出队的元素个数:");
	scanf("%d",&n);
	printf("出队的元素依次为:");
	for(int i = 0 ; i < n ; i++){
		flag = DeQueue(&Q ,&x);
		printf("%5d",x);
	} 
	if(flag){
		printf("出队成功!\n");
	}else{
		printf("出队失败!\n");
	}
	if(flag = GetFront(&Q ,&x)) {
		printf("当前队头元素为:%d\n",x);
	}
	return 0;
} 
void InitQueue(SeqQueue *Q)
{
	Q->front = Q->rear = 0;
	printf("队列初始化成功!");
}
int EmptyQueue(SeqQueue *Q)
{
	if(Q->front == Q->rear){
		return 1;
	}else{
		return 0;
	}
}
int InQueue(SeqQueue *Q , DataType x)
{
	if((Q->rear+1)%MAXSIZE == Q->front){
		printf("队满,不能入队!");
		return 0; 
	}else{
		Q->rear = (Q->rear+1)%MAXSIZE;
		Q->data[Q->rear] = x;
		return 1;
	}
} 
int DeQueue(SeqQueue *Q , DataType *x)
{
	if(EmptyQueue(Q)){
		printf("队空,不能出队元素!");
		return 0;
	}else{
		Q->front = (Q->front+1)%MAXSIZE;
		*x = Q->data[Q->front];
		return 1;
	}
}
int GetFront(SeqQueue *Q , DataType *x)
{
	if(EmptyQueue(Q)){
		printf("队空,无队头元素!");
		return 0;
	}else{
		*x = Q->data[(Q->front+1)%MAXSIZE];
		return 1;
	}
}
void ShowQueue(SeqQueue *Q)
{
	int p = Q->front;
	if(p == Q->rear){
		printf("队空,无元素!");
	}else{
		printf("从队头起队列的元素为:");
		while(p != Q->rear){
			printf("%5d",Q->data[(p+1)%MAXSIZE]);
			p++;
		}
	}
}