[题目描述]
已有 a、b 两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,按学号升序排列。
输入格式:
输入共 N+M+1 行。
第一行,输入 a、b 两个链表元素的数量 N、M,中间用空格隔开。下来 N 行,每行输入两个整数,表示 a 中元素的学号和成绩,下来 M 行,每行输入两个整数,表示 b 中元素的学号和成绩。
输出格式:
输出共 N+M 行,按照学号升序排列的数据。
样例输入
2 3
5 100
6 89
3 82
4 95
2 10
样例输出
2 10
3 82
4 95
5 100
6 89
数据范围
对于 100% 的数据,保证 N<100,M<100。
来源/分类(难度系数:一星)
完整代码展示:
a,b=map(int,input().split())
number=[]
c=[]
for i in range(a):
d=list(map(int,input().split()))
c.append(d)
number.append(d[0])
e=[]
for j in range(b):
f=list(map(int,input().split()))
e.append(f)
number.append(f[0])
c=c+e
number.sort()
for k in range(0,len(number)):
for l in range(0,len(c)):
if number[k]==c[l][0]:
print(c[l][0],c[l][1])
代码解释:
“a,b=map(int,input().split()) number=[] ”,让用户输入两组学生各自的数量,并建立一个空列表number,用于储存从两组中提取出来的学生学号数据。
“c=[]
for i in range(a):
d=list(map(int,input().split()))
c.append(d)
number.append(d[0])
e=[]
for j in range(b):
f=list(map(int,input().split()))
e.append(f)
number.append(f[0]) ”,建立一个空列表c,接着让用户输入第一组学生的数据(学号及成绩),将其储存在列表d中,再将d添加进e中,d[0]添加进number中(循环b次)。列表e及其后for循环同理。
“c=c+e
number.sort()
for k in range(0,len(number)):
for l in range(0,len(c)):
if number[k]==c[l][0]:
print(c[l][0],c[l][1]) ”,将列表e中与列表c合并为c,并将number中数据进行升序排序。遍历列表number和列表c中所有元素,如果存在number[k]==c[l][0],则打印c[l][0],c[l][1]。
运行效果展示:
(声明:以上内容均为原创)