题目:
小王子有一天迷上了排队的游戏,桌子上有标号为 1-10 按顺序摆放的 10 个玩具,现在小王子想将它们按自己的喜好进行摆放。小王子每次从中挑选一个好看的玩具放到所有玩具的最前面。已知他总共挑选了 M 次,每次选取标号为 X 的玩具放到最前面,求摆放完成后的玩具标号。
给出一组输入,M=8 共计排了 8 次,这 8 次的序列为 9,3,2,5,6,8,9,8。 求最终玩具的编号序列。
输入描述
第一行是一个整数 M,表示小王子排玩具的次数。
随后 M行每行包含一个整数 X,表示小王子要把编号为 X 的玩具放在最前面。
输出描述
共 M 行,第 ii行输出小王子第 ii次排完序后玩具的编号序列。
答案(单链表):
import os
import sys
# 请在此输入您的代码
class Node:
def __init__(self, value, next=None):
self.value = value
self.next = next
def creatNode():
root = Node(0)
temp = root
for i in range(1, 12):
temp.next = Node(i)
temp = temp.next
temp.next = None
return root
def delete(x, root):
temp = temp1 = root
while temp != None:
if temp.value == x:
temp1.next = temp.next
temp1 = temp # 可能错误
temp = temp.next
def insert(x, root):
temp = Node(x)
temp.next = root.next
root.next = temp
def show(root):
temp = root.next
while temp.next != None:
print(temp.value, end=" ")
temp = temp.next
print("")
if __name__ == '__main__':
m = int(input())
root = creatNode()
a = []
for i in range(m):
k=int(input())
a.append(k)
for i in range(m):
delete(a[i], root)
insert(a[i], root)
show(root)
循环链表逻辑:
循环链表的组成
特点:
- 首尾相接的链表。
- 可以从任一节点出发,访问链表中的所有节点。
- 判断循环链表中尾结点的特点:
q->next==first
双链表逻辑:
由于在双向链表中既有前向链又有后向链,寻找任一个结点的直接前驱结点与直接后继结点变得非常方便。设指针 p 指向双链表中某一结点,则有下式成立:
p-> llink->rlink = p = p->rlink->llink
声明:文章部分内容,参考或者引用蓝桥云课上的文章。链接如下: