7-8 美食节 (20 分)

在清华举办美食节的某一天的早上10点钟,有N个人试图去生煎包处排队,10点前发生了M个事件,事件大概分为以下4种

  1. 有人从队尾进入队伍
  2. 有人插队
  3. 有人等不及了从队伍中离开

要求10点钟时整个队伍的情况

输入格式:

输入第一行有两个用空格隔开的数N,M

接下来有M行,按时间先后顺序每行表述一个事件

I x:表示编号为x的人从队尾进入队伍

C x y:表示编号为x的人插队,排在y前一位

L x:表示编号为x的人从队伍中离开(这个人有可能还会回来)

我们保证同一时刻队伍里不会出现两个编号相同的人,也不会让没有进入队伍的人离开队伍且数据合法。

输出格式:

输出1行,表示队首到队尾所有人的编号,用空格隔开;如果队伍没有人输出“Bai Ren Zhan”(不含引号)

输入样例:

4 4
I 1
I 2
C 3 2
C 4 1

输出样例:

注意末尾有空格!!!

4 1 3 2 

数据规模和约定

N<=100000,M<=100000

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int a[100000];
int main()
{
	int n,m;
	int x,y;
	char c;
	int count=0;
	scanf("%d %d",&n,&m);
	for(int i=1;i<=m;i++)
	{
		getchar();
		
		scanf("%c",&c);
		if(c=='I')//排在队尾 
		{
			scanf("%d",&x);
			a[count]=x;
			count++;
		}
		else if(c=='C')
		{
			scanf("%d %d",&x,&y);
			for(int i=0;i<count;i++)
			{
				if(a[i]==y)
				{
					for(int j=count;j>i;j--)
					{
						a[j]=a[j-1];
					}
					a[i]=x;
				    break;
				}
				
			}
			count++;
		 } 
		 else if(c=='L')
		 {
		 	scanf("%d",&x);
		 	for(int i=0;i<count;i++)
			{
				if(a[i]==x)
				{
					for(int j=i;j<count-1;j++)
					{
						a[j]=a[j+1];
					}
					break;
				}
			}
			count--;
		 }
	}
	if(count==0)
	{
		printf("Bai Ren Zhan\n");
	}
	else
	{
		for(int i=0;i<count;i++)
		{
			printf("%d ",a[i]);
		}
	}
}

 上面那种数组的方法是正确的  可以参考一下

但是 这道题本来是想用链表的方式做的  但是我提交了好几次都是段错误    因为最近在学习链表  还是希望可以灵活运用            希望评论区有大佬可以帮我指出一下错误      万分感谢!!

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

typedef struct student
{
	int data;
	struct student *next;
}node;

int main()
{
	int n,m;
	node*p1;
	scanf("%d %d",&n,&m);
	char c;
	int d=0;
	int x,y;
    node *head=(node*)malloc(sizeof(struct student));
    head->next=NULL;
    while(m>0)
    {
    	getchar();
    	
    	scanf("%c",&c);
    	if(c=='I')//从队尾进入 
    	{
    		
    		scanf("%d",&x); 
    		node*s=(node*)malloc(sizeof(struct student));//建立新节点 
    		s->data=x;//赋值写在最前 
    		node *q;
	        q=head;
			while(q->next)
			{
				q=q->next;
			}
			q->next=s;
			s->next=NULL;
			d++;
		}
		else if(c=='C')//插入 
		{
			node*p0=head;
			scanf("%d %d",&x,&y);
            node *s=(node*)malloc(sizeof(struct student));
    		s->data=x;
            s->next=NULL;
			while(p0->next->data!=y)
			{
				p0=p0->next;
			}
            if(p0)
            {
                s->next=p0->next;
				p0->next=s;
            }
			d++;						 			
		}	
		else if(c=='L')//删除(离开) 
		{
			    scanf("%d",&x);
				node*p=head;
				node*q;
				q=p->next; 
				while(q!=NULL)
				{
                    if(p->data==x)
                    {
                         p->next=q->next;
			             free(q);//释放内存 
                         break;
                    }
                    p=q;//转置 
					q=q->next;
				}
				d--;
		}
		m--;
	}
	p1 = head->next;
	if(d==0)
	{
		printf("Bai Ren Zhan\n");
		return 0;
	}
	else
	{	
		while(p1!=NULL)
		{
			printf("%d ",p1->data);
			p1=p1->next;
		}
	}
	return 0;
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
一、项目背景 校园美食节是一项旨在推广校园美食文化,增强学生饮食文化素养的活动。烤肠作为一种快捷、方便、美味的食品,深受学生喜爱。因此,本项目旨在组织一场校园烤肠美食节,为学生们提供高质量、丰富多彩的烤肠美食。 二、项目目标 1. 推广校园美食文化,提升学生饮食文化素养; 2. 提供高质量、丰富多彩的烤肠美食,满足学生的口味需求; 3. 打造一个学生交流互动的平台,促进学生之间的交流。 三、项目内容 1. 时间和地点:本次校园烤肠美食节将于2021年5月在学校操场举行。 2. 参与人员:本次活动面向全体学生,欢迎学生积极参与。 3. 活动内容: (1)烤肠摊位:在学校操场上设立多个烤肠摊位,提供各种口味的烤肠,如奶油、芝士、黑椒等。 (2)烤肠比赛:在活动现场举行烤肠比赛,邀请学生参与,并评选出最佳烤肠。 (3)烤肠知识讲解:在活动现场设置烤肠知识讲解区,向学生介绍烤肠的制作方法、历史渊源等知识。 (4)互动游戏:在活动现场设置互动游戏区,让学生在游戏中了解更多关于烤肠的知识。 (5)特色展览:在活动现场设置特色展览区,展示各地特色烤肠及其制作方法。 四、项目预算 1. 烤肠原料费用:2000元 2. 烤肠摊位租赁费用:500元 3. 烤肠比赛奖品费用:1000元 4. 宣传费用:500元 5. 其他费用:500元 总计:4500元 五、项目执行方案 1. 筹备期:提前2周确定活动方案,确定活动预算,招募志愿者。 2. 实施期:活动当天,志愿者到场布置活动场地,准备烤肠原料,设置各项活动区域,进行活动运营和管理。 3. 结束期:活动结束后,清理现场,统计活动数据和反馈意见。 六、项目效果评估 1. 活动参与人数:预计有200名学生参与。 2. 活动满意度:通过问卷调查等方式,了解学生对活动的满意度。 3. 目标达成情况:根据项目目标,评估活动达成情况。 七、项目实施风险析 1. 天气因素:如遇恶劣天气,需提前做好备用方案。 2. 活动安全风险:需要设置安全警示标志,加强管理,确保活动安全。 3. 人员不足风险:需提前招募足够的志愿者,保证活动顺利进行。 以上是本次校园烤肠美食节的项目需求书,希望能够得到批准和支持,让学生们尽情享受美食和文化带来的快乐!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值