Python Forum
LinkedList by User Input - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: LinkedList by User Input (/thread-32753.html)



LinkedList by User Input - SantiagoPB - Mar-03-2021

Hello everyone, my name is Santiago Big Grin .

I have to write a program that reads a sequence of numbers one by one and stores them in a LinkedList.

This program must meet certain conditions:

1. The input must be written by the user.

2. The last element of the input must be -1 to end the sequence (which does not belong to the linked list anymore.)

3. The inputs must be written one by one, ending with -1.

Examples:
Input: 1
3
4
7
5
6
-1
Output: 1 3 4 7 5 6

Input: -1
Output:

I have all the code already written, but I have programmed the input differently, since I do not know how to perform condition 2 and 3. If someone can help me write this last part, I would appreciate it.

Thank you very much for the help.

P.S.: There is my problem:
a_llist = LinkedList()
n = int(input('How many elements would you like to add? '))
for i in range(n):
    data = int(input('Enter data item: '))
    a_llist.append(data)
print('The linked list: ', end = '')
a_llist.display()
FULL CODE:
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 append(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 display(self):
        current = self.head
        while current is not None:
            print(current.data, end = ' ')
            current = current.next

# There are my problem with user input:

a_llist = LinkedList()
n = int(input('How many elements would you like to add? '))
for i in range(n):
    data = int(input('Enter data item: '))
    a_llist.append(data)
print('The linked list: ', end = '')
a_llist.display()



RE: LinkedList by User Input - deanhystad - Mar-03-2021

You should not be asking for how many elements. Input is supposed to end when the user enters -1. At least that is my interpretation of the instructions. Other than that it appears to work.


RE: LinkedList by User Input - SantiagoPB - Mar-03-2021

(Mar-03-2021, 06:58 PM)deanhystad Wrote: You should not be asking for how many elements. Input is supposed to end when the user enters -1. At least that is my interpretation of the instructions. Other than that it appears to work.

Exacly, sorry for ask too many things. You are right I need to user inputs and should end when he put -1. 1as you can see I did a user input but I don't know how to write the condition.


RE: LinkedList by User Input - deanhystad - Mar-03-2021

What will data be when the user enters -1? How can you use that information to break out of the input loop?


RE: LinkedList by User Input - SantiagoPB - Mar-03-2021

(Mar-03-2021, 07:49 PM)deanhystad Wrote: What will data be when the user enters -1? How can you use that information to break out of the input loop?

The program should work as follows for inputs:

The user:

Type 3 and press enter.
Type 4 and press enter.
Type 7 and press enter.
Type -1 and press enter. The program starts and gives the following output:

3 4 7

The -1 is used to start the program and start creating the LinkedList. The program should not write -1 to the result.

My problem starts in the line #25 because I don't know how to write this part of the program.


RE: LinkedList by User Input - deanhystad - Mar-03-2021

You are obviously incorrect in your assessment since the code starting at line #25 is nearly correct. You just need to figure out how to exit the loop when -1 is entered (data == -1). This is an easy problem to solve, so if you are finding it difficult it likely means you are approaching the problem the wrong way. Maybe you should do some research on different ways to end a loop.