Skip to content

Commit 638345b

Browse files
authored
Create HW1_Leetcode_Linked List
建立Linked List的基本模組
1 parent bd15cf2 commit 638345b

File tree

1 file changed

+108
-0
lines changed

1 file changed

+108
-0
lines changed

HW1_Leetcode_Linked List

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
"""定義Node"""
2+
class Node(object):
3+
def __init__(self, val):
4+
self.val = val
5+
self.next = None
6+
7+
"""定義LinkedList"""
8+
class MyLinkedList:
9+
10+
"""
11+
基本結構
12+
"""
13+
def __init__(self):
14+
self.head=None
15+
self.tail=None
16+
self.size=0
17+
18+
19+
"""
20+
取得某位置的數據
21+
"""
22+
def get(self, index: int) -> None:
23+
"""
24+
Get the value of the index-th node in the linked list. If the index is invalid, return -1.
25+
"""
26+
if index<0 or index >= self.size:
27+
return -1
28+
if self.head is None:
29+
return -1
30+
a=self.head
31+
for i in range(index):
32+
a=a.next
33+
return a.val
34+
35+
36+
37+
"""
38+
開頭加Node
39+
"""
40+
def addAtHead(self, val: int) -> None:
41+
newHead=Node(val)
42+
newHead.next=self.head
43+
self.head=newHead
44+
self.size = self.size + 1
45+
46+
47+
48+
"""
49+
尾巴加Node
50+
"""
51+
def addAtTail(self, val: int) -> None:
52+
a=self.head
53+
if a is None:
54+
self.head=Node(val)
55+
else:
56+
while a.next is not None:
57+
a=a.next
58+
a.next=Node(val)
59+
self.size = self.size+1
60+
61+
62+
63+
64+
"""
65+
中間加Node
66+
"""
67+
def addAtIndex(self, index: int, val: int) -> None:
68+
if index < 0 or index > self.size:
69+
return
70+
if index == 0:
71+
self.addAtHead(val)
72+
else:
73+
a = self.head
74+
for i in range(index - 1):
75+
a = a.next
76+
node = Node(val)
77+
node.next = a.next
78+
a.next = node
79+
80+
self.size += 1
81+
82+
83+
"""
84+
刪除其中Node
85+
"""
86+
def deleteAtIndex(self, index: int) -> None:
87+
"""
88+
Delete the index-th node in the linked list, if the index is valid.
89+
"""
90+
if index < 0 or index >= self.size:
91+
return
92+
93+
a = self.head
94+
if index == 0:
95+
self.head = a.next
96+
else:
97+
for i in range(index - 1):
98+
a = a.next
99+
a.next = a.next.next
100+
101+
self.size -= 1
102+
103+
def get_list(self):
104+
'''測試用,可回傳list'''
105+
if self.len != 0:
106+
return [self.get(item) for item in range(self.len)]
107+
else :
108+
return -1

0 commit comments

Comments
 (0)