插队

提交数: 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

来源: 原创