线性表
1.抽象数据类型表示(ADT) 类型名称:线性表
数据对象集:线性表是n(>=0)个元素构成的有序序列(a1,a2,….,an)
操作集:
2.线性表的顺序实现
- 表示方法:
其中100可以自己规定,last代表线性表的长度
#线性表定义
class Lnode(object):
def __init__(self,last):
self.data = https://www.it610.com/article/[None for i in range(100)]
self.last = last# 线性表长度
2.建立空的顺序表
# 1.初始化建立空的线性表
def MakeEmpty(num):
PtrL = Lnode(num)
return PtrL#测试建立空的线性表
s = MakeEmpty(10)
print(s.data[0:s.last])
print(s.last)
测试结果:
文章图片
3.按值查找
# 2.查找给定值的位置
def Find(x, L):
i =0
while(i <= L.last and L.data[i] != x):
i+=1
if(i> L.last):
return -1
else:
return i# 测试查找函数
num = [0,1,2,3,4,5,6,7,8,9]
L = Lnode(10)
for i in range(10):
L.data[i] = num[i]
print("建立新的线性表")
print(L.data[0:L.last])
print("查找元素2")
print("下标为:")
print(Find(2,L))
print("查找元素12")
print("下标为:")
print(Find(12,L)) # 找不到返回-1
测试结果:
文章图片
4.插入操作
# 3.插入(在第i(0<=i<=n)位置上插入一个值为x的新元素)
def Insert(x,i,L):
if i<0 or i>L.last:
print("位置不合理")
return
else:
for j in range(L.last,i-1,-1):
L.data[j+1] = L.data[j]
L.data[i] = x
L.last+=1
return# 测试插入函数
num = [0,1,2,3,4,5,6,7,8,9]
L = Lnode(10)
for i in range(10):
L.data[i] = num[i]
print("建立新的线性表")
print(L.data[0:L.last])
print("在位序3插入元素6")
Insert(6,3,L)
print(L.data[0:L.last])
测试结果:
文章图片
5.删除操作
# 4.删除第i(0<=i<=n-1)个位置上的元素
def Delete(i,L):
if i<0 or i>=L.last:
print("不存在该元素")
return
else:
for j in range(i,L.last-1):
L.data[j] = L.data[j+1]
L.last -=1
return# 测试删除函数
num = [0,1,2,3,4,5,6,7,8,9]
L = Lnode(10)
for i in range(10):
L.data[i] = num[i]
print("建立新的线性表")
print(L.data[0:L.last])
print("删除位序3的元素")
Delete(3,L)
print(L.data[0:L.last])
【数据结构学习之线性表的顺序实现(python 实现)】测试结果:
文章图片
推荐阅读
- 推荐系统论文进阶|CTR预估 论文精读(十一)--Deep Interest Evolution Network(DIEN)
- Python专栏|数据分析的常规流程
- Python|Win10下 Python开发环境搭建(PyCharm + Anaconda) && 环境变量配置 && 常用工具安装配置
- Python绘制小红花
- Pytorch学习|sklearn-SVM 模型保存、交叉验证与网格搜索
- OpenCV|OpenCV-Python实战(18)——深度学习简介与入门示例
- python|8. 文件系统——文件的删除、移动、复制过程以及链接文件
- 爬虫|若想拿下爬虫大单,怎能不会逆向爬虫,价值过万的逆向爬虫教程限时分享
- 分布式|《Python3网络爬虫开发实战(第二版)》内容介绍
- java|微软认真聆听了开源 .NET 开发社区的炮轰( 通过CLI 支持 Hot Reload 功能)