-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathunorderedList.py
More file actions
120 lines (95 loc) · 3.02 KB
/
unorderedList.py
File metadata and controls
120 lines (95 loc) · 3.02 KB
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
114
115
116
117
118
119
120
from node import Node
class UnorderedList:
def __init__(self):
self.head = None
self.end = None
def isEmpty(self):
return self.head == None
def add(self,item):
temp = Node(item)
temp.setNext(self.head)
if self.head == None:
self.end = temp
self.head = temp
def size(self):
current = self.head
count = 0
while current != None:
count = count + 1
current = current.getNext()
return count
def search(self,item):
current = self.head
found = False
while current != None and not found:
if current.getData() == item:
found = True
else:
current = current.getNext()
return found
def remove(self,item):
current = self.head
prev = current
found = False
while current != None and not found:
if current.getData() == item:
found = True
temp = current.getNext()
prev.setNext(temp)
current.setNext(None)
prev = current
current = current.getNext()
def index(self,item):
current = self.head
count = -1
while current != None:
count = count + 1
if current.getData() == item:
break
current = current.getNext()
return count
def __str__(self):
current = self.head
linkedList = ""
while current != None:
linkedList = linkedList + "-->" + str(current.getData())
current = current.getNext()
return linkedList
def pop(self,pos):
x = self.size()
count = -1
if pos > x - 1 or pos < 0:
return "Index out of range"
else:
current = self.head
while count != pos:
count = count + 1
out = current.getData()
current = current.getNext()
return out
def end_item(self):
return self.end.getData()
def append(self,item):
temp = Node(item)
temp1 = self.end
temp1.setNext(temp)
self.end = temp
def insert(self,item,pos):
current = self.head
count = 0
if pos > self.size() or pos < 0:
return "index out of range"
else:
if pos == 0:
temp = Node(item)
temp1 = self.head
self.head = temp
temp.setNext(temp1)
else:
while count < pos - 1:
count = count + 1
current = current.getNext()
temp = Node(item)
temp1 = current.getNext()
current.setNext(temp)
temp.setNext(temp1)