004.插入链表元素
http://dsbpython.openjudge.cn/2024allhw/004/
很遗憾,一意孤行的Y君没有理会你告诉他的饮食计划并很快吃完了他的粮食储备。 但好在他捡到了一张校园卡,凭这个他可以偷偷混入领取物资的队伍。 为了不被志愿者察觉自己是只猫,他想要插到队伍的最中央。(插入后若有偶数个元素则选取靠后的位置) 于是他又找到了你,希望你能帮他修改志愿者写好的代码,在发放顺序的中间加上他的学号6。 你虽然不理解志愿者为什么要用链表来写这份代码,但为了不被发现只得在此基础上进行修改:
python
class Node:
def __init__(self, data, next=None):
self.data, self.next = data, next
class LinkList:
def __init__(self):
self.head = None
def initList(self, data):
self.head = Node(data[0])
p = self.head
for i in data[1:]:
node = Node(i)
p.next = node
p = p.next
def insertCat(self):
// 在此处补充你的代码
########
def printLk(self):
p = self.head
while p:
print(p.data, end=" ")
p = p.next
print()
lst = list(map(int,input().split()))
lkList = LinkList()
lkList.initList(lst)
lkList.insertCat()
lkList.printLk()输入
一行,若干个整数,组成一个链表。
输出
一行,在链表中间位置插入数字6后得到的新链表
样例输入
### 样例输入1
8 1 0 9 7 5
### 样例输入2
1 2 3样例输出
### 样例输出1
8 1 0 6 9 7 5
### 样例输出2
1 2 6 3来源
Lou Yuke
程序填空题目,需要掌握“补充代码”题型,例如写出某个函数的实现代码,如 def insertCat(self):
python
class Node:
def __init__(self, data, next=None):
self.data, self.next = data, next
class LinkList:
def __init__(self):
self.head = None
def initList(self, data):
self.head = Node(data[0])
p = self.head
for i in data[1:]:
node = Node(i)
p.next = node
p = p.next
def insertCat(self):
# 计算链表的长度
length = 0
p = self.head
while p:
length += 1
p = p.next
# 找到插入位置
position = length // 2 if length % 2 == 0 else (length // 2) + 1
p = self.head
for _ in range(position - 1):
p = p.next
# 在插入位置处插入数字6
node = Node(6)
node.next = p.next
p.next = node
def printLk(self):
p = self.head
while p:
print(p.data, end=" ")
p = p.next
print()
lst = list(map(int, input().split()))
lkList = LinkList()
lkList.initList(lst)
lkList.insertCat()
lkList.printLk()
"""
### 样例输入1
8 1 0 9 7 5
### 样例输入2
1 2 3
### 样例输出1
8 1 0 6 9 7 5
### 样例输出2
1 2 6 3
"""