# Python线性表
我们在学习过程中大多用c语言的方式学习了数据结构,随着python的快速发展,python的数据结构也变尤为重要。
线性表是一种最简单并且基础的数据结构,常见的线性表有栈、队列、字符串、数组等形式。每个线性表都具有一定的特性,因此通过这些可以大大提高我们数据运算的可靠性和高效性。
线性表,顾名思义,它是一种线性结构,它是一个包含n>=0个结点的优先序列。
例如下面这些例:
```
[1,2,3,4,5,6,8],dotcpp,[[1,2],[1,2],[1,2]]
```
#### 线性表有2个基本特征
(1)集合中必须存在唯一的‘第一元素’和‘最后元素’
(2)除最后元素外,任一元素都有相继元素;除唯一元素外,任一元素都有前驱元素。
#### 线性表的基本操作
1. Setnull(L):初始化表
2. Lenth(L):求表长及表中元素个数
3. Get(L,i):获取第i个元素
4. Prior(L,i):获取第i个元素的前趋元素
5. Next(L,i):获取第i个元素的后继元素
6. Locate(L,i):返回i元素在L表中的位置
7. Delete(L,x):删除新元素
8. Insert(L,x):插入新元素
9. Empty(L):判断是否为空表
#### 顺序表的操作
1. 计算顺序表的长度:数组的最小索引值为0,因此顺序表的长度为最后一个元素的索引值+1,通常可以用len()来求长度
2. 清空操作:清除线性表中的数据,即使得last=-1,可以使用clear()进行操作.
3. 判断是否为空:即判断len(list)==0
4. 判断顺序表是否已满:当顺序表满时,last=maxsize-1,返回true,否则返回false,表示不为空。
5. 执行插入操作:首先判断顺序表是否满以及插入的位置是否正确,然后将需要插入的位置后面的元素依次后移,最后将需要的元素插入并修改last长度。
插入Insert(L,5,2)
插入前
下标 | 元素
---|---
0 | 1
1 | 2
2 | 1
3 | 2
|
|
插入后
下标 | 元素
---|---
0 | 1
1 | 2
2 | 5
3 | 1
4 | 2
|
6. 执行删除操作:删除指定元素,表长变为n-1.首先判断是否为空以及插入位置,其次将需要删除的元素位置后的元素依次前移,最后修改表长。
#### 插入操作
顺序表是通过连续的存储单元对线性表中的元素进行存储的,相邻的两个元素在物理地址上也是相邻的。第1个元素的位置为Ti(1),那么第i个元素便存储在Ti(1)+(i-1)*sezeof(ElemType)位置,sezeof(ElemType)表示元素所占空间。
插入实例:
```python
def Insert(L,i,element):#在L表中i位置插入element
L_length=len(L)
if i<1 or i>L_length:
return False
if i <=L_length:
for j in range(i-1,L_length)[::-1]:
L[j+1:j+2]=[L[j]]
L[i-1]=element
print(L)
return True
L=[1,2,3,4,5,6,7,8,9]
Insert(L,5,66666666)
```
输出
```python
[1, 2, 3, 4, 66666666, 5, 6, 7, 8, 9]
```
#### 删除操作
```python
def Delete(L,i):
L_length=len(L)
if i<1 or i>L_length:
return False
if i=self.num:
self.append(value)
else:
for i in range(self.num,item,-1):
self.date[i]=self.date[i-1]
self.date[item]=value
self.num+=1
#删除操作
def Delete(self,item=-1):
if not isinstance(item,int):
raise TypeError
if self.num-1<0:
raise IndexError("空")
elif item==-1:
self.num-=1
else:
for i in range(item,self.num-1):
self.date[i]=self.date[i+1]
self.num-=1
if __name__=="__main__":
s=SeqList()
print(s.date)
```
0.0分
1 人评分