循环顺序表实现队列

循环顺序表实现队列的基本操作

不能插入字符 用%c 存储 老是不能输入字符  改成插入为数字了

准备去温习下字符的知识点 有改动会更新代码 = =

//循环顺序表实现队列的基本操作
#include<stdio.h>
#include<stdlib.h>
#define maxsize 50
#define True 1
#define False 0

//status状态信息定义为bool型
typedef bool status; 
//定义队列中的元素数据类型
typedef int ElemType;
//定义队列的结构体类型
typedef struct SqQueue{
	ElemType data[maxsize];
	int front;//定义队首指正
	int rear;//定义队尾指针
};

//顺序队列的基本操作
//队列的初始化
void initqueue(SqQueue &qu){
	//栈的初始化代码 栈头和栈尾指向同一个元素0
	qu.rear = qu.front=0;
	printf("队列的初始化已经完成,请输入您接下来的操作\n");
}
//判断队列是否为空
status isempty(SqQueue qu){
	if(qu.rear==qu.front)
	//	printf("队列空\n");
	return True;	//1
	else
	//	printf("队列不空\n");
	return False;	//0
}
//判读队列是否为满
status isfull(SqQueue qu){
	if((qu.rear+1)%maxsize==qu.front)
	//	printf("队列满\n");
	return True;  //1
	else
	//	printf("队列不满\n");
	return False;	//0
}
//入队操作
status enqueue(SqQueue &qu,ElemType e){
	//队列已满无法入队
	if(isfull(qu)==1)	//已满,无法入队
		return False;
	//队列不满可以入队
	qu.data[qu.rear]=e;
	qu.rear=(qu.rear+1)%maxsize;	//队尾指针加一取模
		return True;
}
//出队操作
status dequeue(SqQueue &qu,ElemType &e){
	//队列为空无法出队
	if(isempty(qu)==1)	//空:1
		return False;
	e=qu.data[qu.front];
	qu.front=(qu.front+1)%maxsize;
		return True;
}
//打印队列中元素  
void printfs(SqQueue qu)  
{  
	int i;
	printf("length:%d\n",(qu.rear-qu.front+maxsize)%maxsize);
	printf("头 ");
	for(i=(qu.front)%maxsize;i<(qu.rear)%maxsize;i++){
		printf("%d ",qu.data[i]);
	}
	printf("尾\n");
}  
//主函数
int main(){
	SqQueue qu;		//定义一个顺序队列
	ElemType e;     //入队的数据元素
	int choose;  
    printf("1.初始化队列\n");  
    printf("2.判断队列是否为空\n");  
    printf("3.入队操作\n");  
    printf("4.出队操作\n");  
    printf("5.打印队列中元素\n");  
    for(;;){  
    printf("请输入您的操作\n");  
    scanf("%d",&choose);  
    switch(choose){  
    case 1:  
   	initqueue(qu);	//对顺序队列进行初始化
    break;  
    case 2: 
    if(isempty(qu)==1)  
        printf("队列空\n");  
    else  
        printf("队列中存在元素\n");  
    break;  
    case 3:         //入队列操作  
        printf("请输入您需要入队列的元素\n");  
        scanf("%d",&e);  
		enqueue(qu,e);
        break;  
    case 4:         //出队列操作  
    if(dequeue(qu,e)==1)  
            printf("出队列成功\n");  
        else  
            printf("出队列失败\n");  
        break;  
    case 5:         //打印队列元素
        printfs(qu);  
        break;  
    }  
}  
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A面dai

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值