python线性表_python-顺序表

# 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 人评分

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值