数据结构与算法实验题2.3 亚克星上的军队
实验任务亚克星上住着许多神奇的生物。其中有聪慧的人族、优雅的精灵、彪悍的野蛮猪、粗鲁
的首任驻….有一天,住在湛蓝球上的恶魔们突破空间的封锁入侵这个美丽的星球。为了保
卫共同的家园,亚克星各族不得不摒弃前嫌,组成联盟。为了更有利的反击恶魔们的入侵,
他们建立了统一的军事指挥中心。在前期,指挥中心会不停的发布军队调动命令,可是,蛮
烦来了。为了更好的做出决策,指挥中心必须迅速了解己方的各地区的军事力量详情。你能
否帮帮这些可怜的种族呢?
每个地区有一个编号(从1 到N),如果一个地区有军队的话,这些军队将组成一个军
团。指挥中心将发布的命令如下:
U a b:将b 地区军团的调到a 地区,从而组成一个新的军团。为了便于管理,每次新加
入的军队将按顺序加入到a 军团后面。数据保证a 与b 不相同。
I a x:将一支人数为x 的军队调到a 地区。为了便于管理,每次新加入的军队将加入到
a 军团前面。
D a x:将a 地区中军队人数为x 的调走。若不存在,则不执行。
Q a:询问a 地区的具体军事信息(即按顺序输出该军团中每个军队的人数)。
数据输入
输入第一行为一个正整数N ,M(2 <= N,M <= 1000)。
接下来N 行,每行第一个数K 表示该地区军队的个数K(1<=K<=100),接下来K 个数
表示各个军队的人数信息(0<=ai<2^31)。
接下来M 行,每行一个操作。
数据输出
对于每个询问操作,输出一行表示a 地区具体军事信息,每两个数之间空格隔开,,行
末无空格。若a 内无元素,输出-1。
输入示例
3 9
2 1 2
3 1 2 3
4 3 2 1 3
U 1 2
Q 1
Q 2
U 3 1
Q 3
I 1 1
Q 1
D 3 1
Q 3
输出示例
1 2 1 2 3
-1
3 2 1 3 1 2 1 2 3
13
2 3 2 2 3#include<stdio.h>
#include<stdlib.h>
#include<math.h>
typedef struct node *link;
typedef struct node {ListItem element;link next;} Node;
link NewNode()
{
link p;
if((p=malloc(sizeof(Node)))==0)
Error("Exhausted memory");
else return p;
}
List ListInit();
void ListInsert(int k,ListItem x,List L);
ListItem ListDelete(int k;List L);
void PrintList(List L);
main()
{
int a,b,i,n,m,l,p,q;
char letter;
scanf("%d %d",&a,&b);
for(i=1;i<=a;i++)
{scanf("%d",&n);
for(m=1;m<=b;m++)
scanf("%d",&l);
}
for(i=1;i<=b;i++)
{
scanf("%c",&letter);
switch(letter)
{
case D:{ scanf("%d %d",&q,&p);
ListDelete(k,L);
} break;
case I:{ scanf("%d %d",&q,&p);
ListInsert(k,x,L);
} break;
case Q:{ scanf("%d",&p);
PrintList(L);
} break;
case U:{ scanf("%d %d",&q,&p);
ListInsert(k,x,L);
} break;
}
}
}
LNode ListInit();
{
List L=malloc(sizeof *L);
L->first=0;
return 0;
}
ListItem ListDelete(int k;List L);
{
link p,q;
ListItem x;
int i;
if(k<1||!L->first) Error("out of bounds");
p=L->first;
if(k==1) L->first=p->next;
else { q=L->first;
for(i=1;i<k-1&&q;i++) q=q->next;
p=q->next;
q->next=p->next;}
x=p->element;free(p);
return x;
}
void ListInsert(int k,ListItem x,List L);
{
link p,y;
int i;
if(k<0) Errror("out of bounds");
p=L->first;
for(i=1;i<k&&p;i++) p=p->next;
y=NewNode();
y->element=x;
if(k) {y->next=p->next;p->next=y;}
else {y->next=L->first;L->first=y;}
}
void PrintList(List L);
{
link p;
for(p=L->first;p;p=p->next) ItemShow(p->element);
}
E:\031102546\2.cpp(5) : error C2146: syntax error : missing ';' before identifier 'element'
E:\031102546\2.cpp(5) : error C2501: 'ListItem' : missing storage-class or type specifiers
E:\031102546\2.cpp(5) : error C2501: 'element' : missing storage-class or type specifiers
E:\031102546\2.cpp(10) : error C2440: '=' : cannot convert from 'void *' to 'struct node *'
Conversion from 'void*' to pointer to non-'void' requires an explicit cast
E:\031102546\2.cpp(11) : error C2065: 'Error' : undeclared identifier
E:\031102546\2.cpp(14) : error C2146: syntax error : missing ';' before identifier 'ListInit'
E:\031102546\2.cpp(14) : error C2501: 'List' : missing storage-class or type specifiers
E:\031102546\2.cpp(14) : fatal error C1004: unexpected end of file found
不知道为什么出现这样的问题