本文实例讲述了python实现数据结构线性链表(单链表)算法。分享给大家供大家参考,具体如下:
初学python,拿数据结构中的线性链表存储结构练练手,理论比较简单,直接上代码。
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
|
#!/usr/bin/python # -*- coding:utf-8 -*- # author: hui # date: 2017-10-13 # 结点类, class node: def __init__( self , data): self .data = data # 数据域 self . next = none # 指针域 def get_data( self ): return self .data # 链表类 class list : def __init__( self , head): self .head = head # 默认初始化头结点 def is_empty( self ): # 空链表判断 return self .get_len() = = 0 def get_len( self ): # 返回链表长度 length = 0 temp = self .head while temp is not none: length + = 1 temp = temp. next return length def append( self , node): # 追加结点(链表尾部追加) temp = self .head while temp. next is not none: temp = temp. next temp. next = node def delete( self , index): # 删除结点 if index < 1 or index > self .get_len(): print "给定位置不合理" return if index = = 1 : self .head = self .head. next return temp = self .head cur_pos = 0 while temp is not none: cur_pos + = 1 if cur_pos = = index - 1 : temp. next = temp. next . next temp = temp. next def insert( self , pos, node): # 插入结点 if pos < 1 or pos > self .get_len(): print "插入结点位置不合理..." return temp = self .head cur_pos = 0 while temp is not node: cur_pos + = 1 if cur_pos = = pos - 1 : node. next = temp. next temp. next = node break temp = temp. next def reverse( self , head): # 反转链表 if head is none and head. next is none: return head pre = head cur = head. next while cur is not none: temp = cur. next cur. next = pre pre = cur cur = temp head. next = none return pre def print_list( self , head): # 打印链表 init_data = [] while head is not none: init_data.append(head.get_data()) head = head. next return init_data if __name__ = = '__main__' : head = node( "head" ) list = list (head) print '初始化头结点:\t' , list .print_list(head) for i in range ( 1 , 10 ): node = node(i) list .append(node) print '链表添加元素:\t' , list .print_list(head) print '链表是否空:\t' , list .is_empty() print '链表长度:\t' , list .get_len() list .delete( 9 ) print '删除第9个元素:\t' , list .print_list(head) node = node( "insert" ) list .insert( 3 , node) print '第3个位置插入‘insert' 字符串 :\t', list .print_list(head) head = list .reverse(head) print '链表反转:' , list .print_list(head) |
执行结果:
希望本文所述对大家python程序设计有所帮助。
原文链接:https://blog.csdn.net/King0217/article/details/78228433