插队
提交数: 1129, 通过率: 65.72%, 平均分: 65.99
题目描述:
有n个人,每个人都有自己的编号,他们排成一个队列。现在一个编号为b的人要插到第a人(不是编号为a)后面,求插入后的队列顺序。
输入格式:
第一行输入n,第二行输入n个数,表示原先的队伍顺序。
第三行输入两个数a,b。
输出格式:
输出一行,为插入后的队列顺序。
样例输入:
5 1 2 3 4 5 2 7
样例输出:
1 2 7 3 4 5
提示:
n<=200
n = int(input())
d = list(map(int, input().split()))
a, b = map(int, input().split())
-------------------------------------------------------------------------------------------------
参考程序1(列表中直接插入):
n = int( input() )
d = list( map(int, input().split() ) )
a, b = map( int, input().split() )
st1 = _____________
st2 = _____________
newd = st1 + [b] + st2 #注意不能写成 b
for i in newd:
print( i, end=" " )
参考程序2(一维数组中,移动元素):
n = int( input() )
d = list( map( int, input().split() ) )
a, b = map( int, input().split() )
d.append( 0 )
for i in range( ___________________ ):
d[ i + 1 ] = d[i]
____________________
for i in d:
print( i, end = ' ' )
参考程序2:
下面的程序用链表实现,请完善程序:
n = int(input())
d = list(map(int, input().split()))
a, b = map(int, input().split())
L = [ ] # L为链表
for i in range( n ):
L.append( [ d[i], ________ ] ) #填空1
L[-1][1] = ________ #填空2
#print( L )
head = 0
cnt = 1
p = head
while cnt < a :
cnt += 1
p = L[p][1]
L.append( _____________ ) #填空3
L[p][1] = _____________ #填空4
#print( L )
p = head
while ____________: #填空5
print( L[p][0] , end =' ')
p = L[p][1]
时间限制: 1000ms
空间限制: 256MB
来源: 原创