插入排序
def insert_sort ( num_list) :
for i in range ( 1 , len ( num_list) ) :
cur = num_list[ i]
j = i
while j > 0 and num_list[ j - 1 ] > cur:
num_list[ j] = num_list[ j - 1 ]
j -= 1
num_list[ j] = cur
print ( num_list)
用单链表实现栈
class Link_stack ( ) :
class Node ( ) :
def __init__ ( self, e, next ) :
self. e = e
self. next = next
def __init__ ( self) :
self. head = None
self. size = 0
def _len ( self) :
return self. size
def is_empty ( self) :
return self. size == 0
def push ( self, e) :
self. head = self. Node( e, self. head)
self. size += 1
def top ( self) :
if self. is_empty( ) :
raise Empty( 'stack is empty !' )
return self. head. e
def pop ( self) :
if self. is_empty( ) :
raise Empty( 'stack is empty !' )
pop_node = self. head. e
self. head = self. head. next
self. size -= 1
return pop_node
用单链表实现队列
class Quenen ( ) :
class Node ( ) :
def __init__ ( self, e, next ) :
self. e = e
self. next = next
def __init__ ( self) :
self. head = None
self. tail = None
self. size = 0
def _len ( self) :
return self. size
def is_empty ( self) :
return self. size == 0
def first ( self) :
if self. is_empty( ) :
raise Empty( 'queue is empty!' )
return self. head. e
def enqueue ( self, e) :
new_node = self. Node( e, None )
if self. is_empty( ) :
self. head = new_node
else :
self. tail_next = new_node
self. tail = new_node
self. size += 1
def dequeue ( self) :
if self. is_empty( ) :
raise Empty( 'queue is empty!' )
node = self. head. e
self. head = self. head. next
self. size -= 1
if self. is_empty( ) :
self. tail = None
return node
用循环列表实现队列
class Circle_queue ( ) :
class Node ( ) :
def __init__ ( self, e, next ) :
self. e = e
self. next = next
def __init__ ( self) :
self. tail = None
self. size = 0
def _len ( self) :
return self. size
def is_empty ( self) :
return self. size == 0
def first ( self) :
if self. is_empty( ) :
raise Empty( 'queue is empty!' )
self. head = self. tial. next
return self. head. e
def enqueue ( self, e) :
node = self. Node( e, None )
if self. is_empty( ) :
node. next = node
else :
node. next = self. tail. next
self. tail. next = node
self. tail = node
self. size += 1
def dequeue ( self) :
if self. is_empty( ) :
raise Empty( 'queue is empty!' )
old_head = self. tail. next
if self. size == 1 :
self. tail = None
else :
self. tail. next = old_head. next
self. size -= 1
return old_head. e
双向链表
class double_linklist ( ) :
class Node ( ) :
def __init__ ( self, e, pre, next ) :
self. e = e
self. pre = self. pre
self. next = next
def __init__ ( self) :
self. head = self. Node( None , None , None )
self. tail = self. Node( None , None , None )
self. head. next = self. tail
self. tail. pre = self. head
self. size = 0
def _len ( self) :
return self. size
def is_empty ( self) :
return self. size == 0
def insert_e ( self, e, p, n) :
new_node = self. Node( e, p, n)
p. next = new_node
n. pre = new_node
self. size += 1
return new_node
def delete_e ( self, node) :
p = node. pre
n = node. next
p. next = n
n. pre = p
self. size -= 1
e = node. e
node. pre, node, node. next = None , None , None
return e