链表结构
class Node:
def __init__(self
, item
, next_
):
self
.item
= item
self
.next_
= next_
class LinkList:
def __init__(self
):
self
.head
: Node
= Node
(None, None)
self
.length
: int = 0
def clear(self
):
self
.head
.next_
= None
self
.length
= 0
def get_length(self
) -> int:
return self
.length
def is_empty(self
):
return self
.length
== 0
def get_item(self
, index
):
node_t
: Node
= self
.head
.next_
for i
in range(index
):
node_t
= node_t
.next_
return node_t
.item
def append(self
, item
):
node_t
: Node
= self
.head
while node_t
.next_
is not None:
node_t
= node_t
.next_
node_new
: Node
= Node
(item
, None)
node_t
.next_
= node_new
self
.length
+= 1
def insert(self
, item
, index
):
node_pre
: Node
= self
.head
.next_
for i
in range(index
- 1):
node_pre
= node_pre
.next_
node_curr
= node_pre
.next_
node_new
: Node
= Node
(item
, node_curr
)
node_pre
.next_
= node_new
self
.length
+= 1
def delete(self
, index
):
node_pre
: Node
= self
.head
for i
in range(index
- 1):
node_pre
= node_pre
.next_
node_curr
: Node
= node_pre
.next_
node_next
: Node
= node_curr
.next_
node_pre
.next_
= node_next
self
.length
-= 1
return node_curr
.item
def get_index(self
, item
):
node_t
: Node
= self
.head
index
= 0
while node_t
.next_
is not None:
node_t
= node_t
.next_
if node_t
.item
== item
:
return index
index
+= 1
return -1
def show_items(self
):
node_t
: Node
= self
.head
if self
.length
> 0:
while node_t
.next_
is not None:
node_t
= node_t
.next_
print(node_t
.item
, end
=' ')
print()
else:
print('empty')
def reverse(self
):
if self
.is_empty
():
return
else:
self
.reverse_node
(self
.head
.next_
)
def reverse_node(self
, curr
: Node
):
if curr
.next_
is None:
self
.head
.next_
= curr
return curr
pre
= self
.reverse_node
(curr
.next_
)
pre
.next_
= curr
curr
.next_
= None
return curr
if __name__
== '__main__':
link
= LinkList
()
link
.append
('node1')
link
.append
('node2')
link
.append
('node3')
link
.show_items
()
link
.insert
('insert item', 2)
link
.show_items
()
print(link
.get_index
('node3'))
print(link
.get_item
(2))
print(link
.delete
(1))
link
.show_items
()
link
.reverse
()
link
.show_items
()
print(link
.is_empty
())
link
.clear
()
print(link
.is_empty
())
转载请注明原文地址: https://lol.8miu.com/read-6766.html