【问题标题】:How to push all user input at a time in a single row to a Linked List in Python?如何一次将所有用户输入在一行中推送到 Python 中的链接列表?
【发布时间】:2020-11-08 09:59:09
【问题描述】:

代码如下:

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


class LinkedList:
    def __init__(self):
        self.head = None
        self.last_node = None

    def prepend(self, data):
        new_node = Node(data)
        new_node.next = self.head
        self.head = new_node

    def push(self, data):
        if self.last_node is None:
            self.head = Node(data)
            self.last_node = self.head
        else:
            self.last_node.next = Node(data)
            self.last_node = self.last_node.next

    def insert_after(self, prev_node, data):
        if not prev_node:
            print('Given node not present in the list')
            return
        new_node = Node(data)
        new_node.next = prev_node.next
        prev_node.next = new_node

    def pswap(self):
        temp = self.head
        if temp is None:
            return

        while (temp is not None and temp.next is not None):
            temp.data, temp.next.data = temp.next.data, temp.data
            temp = temp.next.next

    def display(self):
        current = self.head
        while current:
            print(current.data, end=' ')
            current = current.next


llist = LinkedList()
T = int(input())
for x in range(T):
    d = int(input())
    llist.push(d)

llist.display()
llist.pswap()
print()
llist.display()

这里我可以这样通过:
4 => 您要输入的元素数
1
2
3
4
但我想以这种方式给用户输入:
4 => 您要输入的元素数
1 2 3 4

【问题讨论】:

    标签: python-3.x data-structures linked-list user-input singly-linked-list


    【解决方案1】:

    最简单的实现可能就是split用户提供的字符串:

    llist = LinkedList()
    T = int(input("Number of elements: "))
    data = input("Space-separated numbers: ")
    numbers = map(int, data.split())
    
    for d in numbers:
        llist.push(d)
    

    这会忽略用户提供的元素 T 的数量,但您可以通过要求用户输入更多数据(如果他们输入的数据不足)或通知多余的数据将不会被处理来合并此信息:

    T = int(input("Number of elements: "))
    data = []
    while len(data) < T:
        data.extend(map(int, input("Space-separated numbers: ").split()))
    
    if len(data) > T:
        print(f"Too much data entered, its length will be cut to {T}")
    
    for d in data[:T]:
        llist.push(d)
    

    【讨论】:

    • 感谢您的帮助,我被困了很长一段时间。
    猜你喜欢
    • 1970-01-01
    • 2021-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-30
    • 1970-01-01
    • 1970-01-01
    • 2019-08-18
    相关资源
    最近更新 更多