线性表

Grade 0 Open Time Thursday, 21 February 2013, 11:02 pm
Discount 0.8 Time Discount Thursday, 28 February 2013, 11:02 pm
Allow late Yes Close Time Thursday, 28 February 2013, 11:02 pm
Input file linet.in Output file linet.out
问题描述
学校有部分学生成绩需存储处理,请你设计一个程序,具备存储、查找、插入、删除数据的功能。(为提高程序效率,程序处理中不允许批量移动数据。)
【输入格式】
    输入由若干行组成:
第一行有一个整数,n(1≤n≤2000);n表示开始时学生人数。第2--n+1行是n个学生的信息,每行两个整数,p(1≤p≤n)、q(1≤q≤200);p表示学生学号,q表示学生成绩。
第n+2行是一个整数,m(1≤n≤10);m表示要进行操作的数量。接下来第n+3--n+3+m行是每种操作的信息,每行若干个整数,第1个整数表示操作类型,1表示查找操作,2表示插入操作,3表示删除操作。
对于查找操作:该行第二个整数表示查找类型,1表示单个查找,即查找个人信息,后边有第三个整数,表示要查找人的学号;0表示全部查找,本行只有两个整数。如果没有要查找的信息,查找结果为no。
对于插入操作:该行第二个整数x表示插入类型,x=1表示单个插入,后边有三个整数a,b,c,a表示信息插入的位置(插入到第a个节点之后),b,c表示插入信息(学生学号和学生成绩);x>1表示多个插入,并且x表示要插入信息的数量,后边有x组整数(每组3个整数),表示x组插入信息。如果线性表已满,显示out,如果信息重复,显示dup,并且不插入重复信息。
对于删除操作:该行第二个整数y表示删除数量,后边有y个整数,表示y组删除信息(每组仅有学生的学号)。如果线性表中无相应信息,则输出error。
【输出格式】
    根据不同的操作,输出不同的操作信息。
插入和删除操作如无操作错误(学号重复、人数超限等),无输出信息。
查找操作中如是单个查找,只输出单个学生信息(输出一行,两个整数)。如果是全部查找,第一行输出线性表中学生信息数n,接下来n行输出学生信息(每行两个整数)
【输入输出样例】
输入文件名:linet.in
4
1 98
2 78
3 88
4 99
2
3 1 2
1 0
输出文件名:linet.out
3
1 98
3 88
4 99