第七次试验

#include<iostream>
#include<cstdlib>
#include<string>
#include<cmath>
#include<cctype>
#include<cstdio>
using namespace std;
#define MaxSize 100
typedef char ElemType;
typedef struct
{
	ElemType data[MaxSize];
	int front,rear;		//队首和队尾指针
} SqQueue;
void InitQueue(SqQueue *&q)		//初始化队列q
{	q=(SqQueue *)malloc (sizeof(SqQueue));
	q->front=q->rear=0;
}
void DestroyQueue(SqQueue *&q)	//销毁队列q
{
	free(q);
}
bool QueueEmpty(SqQueue *q)	//判断队q是否空
{
	return(q->front==q->rear);
}
bool enQueue(SqQueue *&q,ElemType e)	//进队
{	if ((q->rear+1)%MaxSize==q->front)	//队满上溢出
		return false;
	q->rear=(q->rear+1)%MaxSize;
	q->data[q->rear]=e;
	return true;
}
bool deQueue(SqQueue *&q,ElemType &e)	//出队
{	if (q->front==q->rear)		//队空下溢出
		return false;
	q->front=(q->front+1)%MaxSize;
	e=q->data[q->front];
	return true;
}

void solve(){
    SqQueue *q;
    InitQueue(q);
    char c;
    while(cin>>c){
        if(isdigit(c))
            enQueue(q,c);
        else if(isalpha(c)){
            char x;
            if(deQueue(q,x))
                printf("出队元素为:%c\n",x);
            else
                printf("队列为空\n");
        }
        else break;
    }
}

int main(){
    solve();
    return 0;
}

#include<iostream>
#include<cstdlib>
#include<string>
#include<cmath>
#include<cctype>
#include<cstdio>
#include<stack>
using namespace std;
#define MaxSize 100
typedef char ElemType;
typedef struct
{
	ElemType data[MaxSize];
	int front,rear;		//队首和队尾指针
} SqQueue;
void InitQueue(SqQueue *&q)		//初始化队列q
{	q=(SqQueue *)malloc (sizeof(SqQueue));
	q->front=q->rear=0;
}
void DestroyQueue(SqQueue *&q)	//销毁队列q
{
	free(q);
}
bool QueueEmpty(SqQueue *q)	//判断队q是否空
{
	return(q->front==q->rear);
}
bool enQueue(SqQueue *&q,ElemType e)	//进队
{	if ((q->rear+1)%MaxSize==q->front)	//队满上溢出
		return false;
	q->rear=(q->rear+1)%MaxSize;
	q->data[q->rear]=e;
	return true;
}
bool deQueue(SqQueue *&q,ElemType &e)	//出队
{	if (q->front==q->rear)		//队空下溢出
		return false;
	q->front=(q->front+1)%MaxSize;
	e=q->data[q->front];
	return true;
}

void solve(){
    SqQueue *q;
    InitQueue(q);
    printf("初始队列:");
    for(char i='a';i<='f';i++){
        enQueue(q,i);
        cout<<i<<" ";
    }
    cout<<endl;
    char x;
    stack<char> st;
    while(deQueue(q,x)) st.push(x);
    while(!st.empty()){
        x=st.top();
        st.pop();
        enQueue(q,x);
    }
    printf("翻转后的队列为:");
    while(deQueue(q,x)) cout<<x<<" ";
    cout<<endl;
}

int main(){
    solve();
    return 0;
}

#include<iostream>
#include<cstdlib>
#include<string>
#include<cmath>
#include<cctype>
#include<cstdio>
#include<stack>
using namespace std;
#define MaxSize 100
typedef int ElemType;
typedef struct
{
	ElemType data[MaxSize];
	int front,rear;		//队首和队尾指针
} SqQueue;
void InitQueue(SqQueue *&q)		//初始化队列q
{	q=(SqQueue *)malloc (sizeof(SqQueue));
	q->front=q->rear=0;
}
void DestroyQueue(SqQueue *&q)	//销毁队列q
{
	free(q);
}
bool QueueEmpty(SqQueue *q)	//判断队q是否空
{
	return(q->front==q->rear);
}
bool enQueue(SqQueue *&q,ElemType e)	//进队
{	if ((q->rear+1)%MaxSize==q->front)	//队满上溢出
		return false;
	q->rear=(q->rear+1)%MaxSize;
	q->data[q->rear]=e;
	return true;
}
bool deQueue(SqQueue *&q,ElemType &e)	//出队
{	if (q->front==q->rear)		//队空下溢出
		return false;
	q->front=(q->front+1)%MaxSize;
	e=q->data[q->front];
	return true;
}

void print(SqQueue *&q){
    for(int i=0;;i++){
        if(q->front+i==q->rear) break;
        int p=(q->front+i)%MaxSize;
        cout<<q->data[p+1]<<" ";
    }
    cout<<endl;
}

void solve(){
    SqQueue *q;
    InitQueue(q);
    int x,num;
    while(true){
        printf("1:排队——输入排队病人的病历号,加入到病人排队队列中。\n");
        printf("2:就诊——病人排队队列中最前面的病人就诊,并将其从队列中删除。\n");
        printf("3:查看排队——从队首到队尾列出所有的排队病人的病历号。\n");
        printf("4:不再排队,余下依次就诊——从队首到队尾列出所有的排队病人的病历号,并推出运行。\n");
        printf("5:下班——退出运行。\n");
        printf("请输入编号:");
        cin>>x;
        if(x==1){
            printf("请输入病历号:");
            cin>>num;
            enQueue(q,num);
        }
        else if(x==2){
            if(deQueue(q,num))printf("轮到%d看病了",num);
            else printf("无人排队\n");
        }
        else if(x==3){
            print(q);
        }
        else if(x==4){
            int s;
            while(deQueue(q,s)) cout<<s<<" ";
            cout<<endl;
        }
        else break;
    }

}

int main(){
    solve();
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值