-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcmp 2 llists.py
113 lines (72 loc) · 3.06 KB
/
cmp 2 llists.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# You’re given the pointer to the head nodes of two linked lists. Compare the data in the nodes of the linked lists to check if they are equal. If all data attributes are equal and the lists are the same length, return . Otherwise, return .
# Example
# The two lists have equal data attributes for the first nodes. is longer, though, so the lists are not equal. Return .
# Function Description
# Complete the compare_lists function in the editor below.
# compare_lists has the following parameters:
# SinglyLinkedListNode llist1: a reference to the head of a list
# SinglyLinkedListNode llist2: a reference to the head of a list
# Returns
# int: return 1 if the lists are equal, or 0 otherwise
# Input Format
# The first line contains an integer , the number of test cases.
# Each of the test cases has the following format:
# The first line contains an integer , the number of nodes in the first linked list.
# Each of the next lines contains an integer, each a value for a data attribute.
# The next line contains an integer , the number of nodes in the second linked list.
# Each of the next lines contains an integer, each a value for a data attribute.
# Constraints
# Output Format
# Compare the two linked lists and return 1 if the lists are equal. Otherwise, return 0. Do NOT print anything to stdout/console.
# The output is handled by the code in the editor and it is as follows:
# For each test case, in a new line, print if the two lists are equal, else print .
# import os
# import sys
# class SinglyLinkedListNode:
# def __init__(self, node_data):
# self.data = node_data
# self.next = None
# class SinglyLinkedList:
# def __init__(self):
# self.head = None
# self.tail = None
# def insert_node(self, node_data):
# node = SinglyLinkedListNode(node_data)
# if not self.head:
# self.head = node
# else:
# self.tail.next = node
# self.tail = node
# def print_singly_linked_list(node, sep, fptr):
# while node:
# fptr.write(str(node.data))
# node = node.next
# if node:
# fptr.write(sep)
def compare_lists(llist1, llist2):
while llist1 and llist2:
if llist1.data == llist2.data:
llist1 = llist1.next
llist2 = llist2.next
else:
return 0
if llist1 or llist2:
return 0
return 1
# if __name__ == '__main__':
# fptr = open(os.environ['OUTPUT_PATH'], 'w')
# tests = int(input())
# for tests_itr in range(tests):
# llist1_count = int(input())
# llist1 = SinglyLinkedList()
# for _ in range(llist1_count):
# llist1_item = int(input())
# llist1.insert_node(llist1_item)
# llist2_count = int(input())
# llist2 = SinglyLinkedList()
# for _ in range(llist2_count):
# llist2_item = int(input())
# llist2.insert_node(llist2_item)
# result = compare_lists(llist1.head, llist2.head)
# fptr.write(str(int(result)) + '\n')
# fptr.close()