顺序表即线性表的顺序存储结构。它是通过一组地址连续的存储单元对线性表中的数据进行存储的,相邻的两个元素在物理位置上也是相邻的。比如,第1个元素是存储在线性表的起始位置LOC(1),那么第i个元素即是存储在LOC(1)+(i-1)*sizeof(ElemType)位置上,其中sizeof(ElemType)表示每一个元素所占的空间。
追加直接往列表后面添加元素,插入是将插入位置后的元素全部往后面移动一个位置,然后再将这个元素放到指定的位置,将长度加1删除是将该位置后面的元素往前移动,覆盖该元素,然后再将长度减1
实现代码:
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
|
#!/usr/bin/python # -*- coding: utf-8 -*- class SeqList( object ): def __init__( self ,maxsize): self .maxsize = maxsize self .data = range (maxsize) self .last = len ( self .data) - 1 def __getitem__( self , key): if self .is_empty(): print 'seqlist is empty' return elif key< 0 or key> self .last: print 'the given key is Error' return else : return self .data[key] def __setitem__( self , key, value): if self .is_empty(): print 'seqlist is empty' return elif key< 0 or key> self .last: print 'the given key is Error' return else : self .data[key] = value def __len__( self ): length = self .last + 1 return length def getlength( self ): return self .last + 1 def clear( self ): self .data = [] def is_empty( self ): if self .last = = - 1 : return True else : return False def is_full( self ): if self .last = = self .maxsize - 1 : return True else : return False def getelem( self ,index): if self .is_empty(): print 'seqlist is empty' return elif index< 0 or index> self .last: print 'position is error' else : return self .data[index] def getindex( self ,elem): if self .is_empty(): print 'seqlst is empty' return else : for i in range ( self .last): if self .data[i] = = elem: return i def append( self ,elem): if self .is_empty(): print 'seqlist is empty' return else : self .last + = 1 self .data = self .data + [elem] def insert( self ,index,elem): if self .is_empty(): print 'seqlist is empty' return elif index< 0 or index> self .last + 1 : print 'postion is error' return elif index = = self .last + 1 : self .last + = 1 self .data = self .data + [elem] else : self .data + = [elem] if index = = 0 : for i in self .data[ self .last:: - 1 ]: self .data[i + 1 ] = self .data[i] else : for i in self .data[ self .last:index - 1 : - 1 ]: self .data[i + 1 ] = self .data[i] self .data[index] = elem self .last + = 1 #print self.data def delete( self ,index): if self .is_empty(): print 'seqlist is empty' return elif index< 0 or index> self .last + 1 : print 'postion is error' return elif index = = self .last + 1 : self .last - = 1 self .data = self .data[: - 1 ] else : for i in self .data[: - 1 ]: if i > = index: self .data[i] = self .data[i + 1 ] else : pass self .data = self .data[: - 1 ] self .last - = 1 sl = SeqList( 5 ) print sl.data sl.append( 5 ) print sl.data sl.insert( 6 , 10 ) print sl.data sl.delete( 5 ) print sl.data |
说明:其实python中得list 本身是支持该种数据结构的,可以直接使用。
总结
以上就是本文关于Python数据结构之顺序表的实现代码示例的全部内容,希望对大家有所帮助。如有不足之处,欢迎留言指出。
原文链接:https://www.cnblogs.com/yupeng/archive/2013/11/03/3405072.html