Skip to content

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
"""