数据结构学习之线性表的顺序实现(python 实现)

线性表

1.抽象数据类型表示(ADT)

类型名称:线性表
数据对象集:线性表是n(>=0)个元素构成的有序序列(a1,a2,….,an)
操作集:

2.线性表的顺序实现
  1. 表示方法:
    其中100可以自己规定,last代表线性表的长度
#  线性表定义
class Lnode(object):
    def __init__(self,last):
        self.data = [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])

测试结果:
这里写图片描述

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值