输入格式
第一行两个正整数 n、m,其中n表示员工个数,m表示操作次数
接下来n行,每行包含一名员工信息,即姓名:name、职务:position、工号:id
接下来m行,每行首先会有两个正整数op, x
若op = 1,表示线性表中在位置x的员工离职
若op = 2, 表示有员工入职,需要将员工置入线性表中的位置x处,接下来会输入两个字符串和一个正整数代表入职员工的name, position, id
若op = 3,表示查询位置x处员工的信息
输入保证
1 <= n, m <= 1000
name, postion 为长度不超过50的字符串
id为一整型变量,满足1 <= id <= 1000000
x为正整数,不会超出整型变量值域范围
输入中不会有两名员工有完全的相同信息
输出格式
对于每一个操作输出一行,如果位置x超出当前线性表的范围,输出-1
否则对于入职与离职操作,输出操作后线性表的结构,如下图所示
name_1 postion_1 id_1 name_2 position_2 id_2 ... name_m positon_m id_m
m表示输出时线性表中存在的总人数
对于查询操作,输出对应位置员工信息 name_x position_x id_x
样例输入
3 6
alice manager 1
bob staff 2
tom staff 3
1 2
2 3 lily staff 4
2 10 bob consultant 10
3 2
2 2 bob consultant 1000
3 1000
样例输出
alice manager 1 tom staff 3
alice manager 1 tom staff 3 lily staff 4
-1
tom staff 3
alice manager 1 bob consultant 1000 tom staff 3 lily staff 4
-1
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct worker{
char name[50],position[50];
int id;
};
struct worker *shuru(){
int i=0;
char t;
struct worker *p;
p=(struct worker*)malloc(sizeof(struct worker));
scanf("%s%s",&p->name,&p->position);
scanf("%d",&p->id);
return p;
};
void shuchu(struct worker *p)
{
printf("%s %s %d ",p->name,p->position,p->id);
}
int main(){
int n,m,i,x,d,op,t;
char na[50],po[50];
scanf("%d%d",&n,&m);
struct worker *p[1000];
for(i=0;i<n;i++)
{
p[i]=shuru();
}
for(i=1;i<=m;i++){
scanf("%d%d",&op,&x);
if(x>n){printf("-1\n");break;}
if(op==1){for(t=x-1;t<n;t++)p[t]=p[t+1];n--;
for(t=0;t<n;t++)shuchu(p[t]);printf("\n");
}
if(op==2){for(t=n;t>=x;t--){p[t]=p[t-1];
}
scanf("%s%s%d",&p[x-1]->name,&p[x-1]->position,&p[x-1]->id);n++;
for(t=0;t<=n-1;t++)shuchu(p[t]);
}
if(op==3){
shuchu(p[x-1]);printf("\n");
}
}
return 0;
}
实在是不知道哪错了 求解答