蓝桥杯—链表类型题:

小王子排序

这一题要求用到单项列表来解决。也可以使用跨行接受解决,事不宜迟,直接上代码。

第一个,我使用的是链表法解决问题。

一.创建链表。

class Node:def __init__(self,data):self.data = dataself.next = Noneclass Link:def __init__(self) -> None:self.head = None#初始化头节点#这里的x,我们已经设为节点def addNode(self,x):point = x point.next = self.headself.head = point#后续要将输入到的数,排到最前面def changeNode(self,num):pre = self.headwhile pre.next != None:if int(pre.next.data) == num:temp = pre.nextpre.next = temp.next #改变pre的指针方向temp.next = self.head #将self.head的指针给tempself.head = temp def print_allNode(self):temp = self.headwhile temp.data != None:print(temp.data, end=' ')temp = temp.next#获取全链表的数值#开始完成要求M = int(input())alist = Link()#实例化一个链表for i in range(1,11):a = Node(i)alist.addNode(a)#将数值填入列表中while M > 0:X = int(input())#输入的目标值alist.changeNode(x)alist.print_allNode#输出排序后的链表的标签M -= 1

二.另一种方法

ls = ["1","2","3","4","5","6","7","8","9","10"]M = int(input())shuru = [str(input()) for i in range(M)]for i in shuru:ls.remove(i)ls.insert(0,i)print(" ".join(ls))