每日一练,蓝桥杯

蓝桥杯---链表类型题:

小王子排序

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

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

一.创建链表。

class Node:
    def __init__(self,data):
        self.data = data
        self.next = None

class Link:
    def __init__(self) -> None:
        self.head = None
#初始化头节点

#这里的x,我们已经设为节点
    def addNode(self,x):
        point = x     
        point.next = self.head
        self.head = point

#后续要将输入到的数,排到最前面
    def changeNode(self,num):
        pre = self.head
        while pre.next != None:
            if int(pre.next.data) == num:
                temp = pre.next
                pre.next = temp.next #改变pre的指针方向
                temp.next = self.head #将self.head的指针给temp
                self.head = temp

     def print_allNode(self):
        temp = self.head
        while 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))

你可能感兴趣的:(蓝桥杯)