c语言食堂就餐排队问题290行

定制魏:QTWZPW,获取更多源码等

目录

题目

数据结构 

 函数设计

结构设计 

总结 

效果截图 ​

主函数代码 


题目


设计一个程序来模拟食堂就餐排队问题,通过输入学生人数和面包数量,计算有多少学生能够吃到午餐。

数据结构 

该程序使用了以下数据结构:

  1. 顺序栈 SqStack 结构体

    • 用于存储面包栈的信息,包括栈底、栈顶和栈的大小。
  2. 顺序队列 SqQueue 结构体

    • 用于存储学生队列的信息,包括队列的基地址、队首和队尾的位置。

 函数设计

  1. InitStack() 函数

    • 用于初始化顺序栈。
  2. Push()、Pop() 和 GetTop() 函数

    • 实现顺序栈的基本操作,包括入栈、出栈和获取栈顶元素。
  3. InitQueue()、EnQueue() 和 DeQueue() 函数

    • 用于初始化顺序队列、入队和出队操作。
  4. LoopJudge() 函数

    • 用于判断循环结束条件。
  5. CountStu() 函数

    • 计算有多少学生能够吃到午餐。

结构设计 

  1. 主函数结构

    • 在主函数中,根据输入的学生人数和面包数量,初始化学生队列和面包栈,并进行计算。
  2. 学生队列和面包栈初始化

    • 分别通过 InitQueue() 和 InitStack() 函数进行初始化。

总结 

 该程序通过合理的数据结构设计和函数设计,实现了对食堂就餐排队问题的模拟。使用顺序栈和顺序队列分别存储面包栈和学生队列的信息,通过各种操作实现了对队列和栈的管理和计算。算法设计上充分考虑了循环结束条件和学生吃饭的情况,保证了程序的正确性和实用性。综上所述,该程序设计合理,功能完善,能够有效解决食堂就餐排队问题,提高了排队效率。

效果截图
 

主函数代码 

int main()
{
	SqQueue Q;
	SqStack S;
	QElemType e;
    SElemType k;
	int i,n,m;
    printf("输入学生数(面包数量相同)\n");
    scanf("%d",&n);
    printf("初始化学生队列\n");
    InitQueue(Q);
	for(i=1;i<=n;i++)
    {
        scanf("%d",&e);
		EnQueue(Q,e);
	}
	printf("初始化面包栈\n");
	InitStack(S);
	for(i=1;i<=n;i++)
    {
        scanf("%d",&k);
		Push(S,k);
	}
   ReverseStack(S);
   m=CountStu( Q,S);
   if(m==0)   printf("所有同学都吃到午餐\n");
   else       printf("还有%d位同学没吃到午餐\n",m);

}

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值