线性表就是0个或多个数据元素的有限序列; 元素之间存在顺序, 除开头结尾之外, 每个元素有且仅有一个前驱元素, 后继元素。线性表的顺序存储叫做顺序表,简单的说就是对数组进行封装,使得更好的满足需求。
1. 线性表的顺序存储结构
线性表的顺序存储结构指的是用一段地址连续的内存依次存储线性表的数据元素
2. 线性表的链式存储结构
链表
3. 顺序表Python实现
class List:
"""
线性表的顺序存储结构: 顺序表
数据成员:
一个数组, 线性表的长度
方法成员:
1. 判断线性表是否为空
2. 向线性表任意位置插入元素
3. 查找线性表中是否存在某个值
4. 删除任意位置的一个元素
5. 获取列表中任意位置的元素
6. 清空列表
"""
def __init__(self, data):
self.List = data
self.length = self._get_list_length()
def _get_list_length(self): return len(self.List)
def is_empty(self):
# 1. 判断线性表是否为空
if len(self.List) == 0: return True
else: return False
def insert(self, i, element):
# 2. 向线性表第i个位置插入元素
length = self.length
if i not in range(length): raise(Exception("线性表长度不足"))
for j in range(i, length):
temp = self.List[j]
self.List[j] = element
element = temp
def locate_ele(self, element):
# 3. 对给定的某个值element定位, 如果存在返回-1
length = self.length
for i in range(length):
if self.List[i] == element:
return i
print("\n线性表中不存在{0}".format(element))
return -1
def delete_i_ele(self, i):
# 4. 删除第i个位置的元素
length = self.length
if i not in range(length): raise(Exception("线性表长度不足"))
temp = []
for j in range(i, length-1):
temp.append(self.List[j + 1])
self.List = self.List[0:j-1] + temp
def get_i_ele(self, i):
# 5. 获取第i个位置的元素
length = self.length
if i not in range(length): raise(Exception("线性表长度不足"))
return self.List[i]
def clean(self): self.List = []