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

来源:互联网 发布:yii2开源cms推荐 编辑:程序博客网 时间:2024/04/27 19:03

线性表

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])

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

原创粉丝点击