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

yipeiwu_com5年前Python基础

本文实例为大家分享了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  # 线性表长度12345

2.建立空的顺序表

# 1.初始化建立空的线性表
def MakeEmpty(num):
  PtrL = Lnode(num)
  return PtrL

# 测试建立空的线性表
s = MakeEmpty(10)
print(s.data[0:s.last])
print(s.last)12345678910

测试结果:

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设计】。

相关文章

python查看zip包中文件及大小的方法

本文实例讲述了python查看zip包中文件及大小的方法。分享给大家供大家参考。具体实现方法如下: #!/usr/bin/env python import zipfile z =...

Python判断操作系统类型代码分享

经常地我们需要编写跨平台的脚本,但是由于不同的平台的差异性,我们不得不获得当前所工作的平台(操作系统类型)。 代码如下: 复制代码 代码如下: import platform def T...

pygame实现俄罗斯方块游戏(AI篇2)

pygame实现俄罗斯方块游戏(AI篇2)

继续pygame实现俄罗斯方块游戏(AI篇1)的代码更新 一、消除后才做评价 上一篇我们是对方块落下的位置和落下后出来的空洞进行了评价,但是这些评价都是没有计算消除的,以至于机器人现在不...

浅谈python中requests模块导入的问题

浅谈python中requests模块导入的问题

今天使用Pycharm来抓取网页图片时候,要导入requests模块,但是在pycharm中import requests 时候报错。 原因: python中还没有安装requests库...

更换Django默认的模板引擎为jinja2的实现方法

本机环境 操作系统:fedora24 python版本:3.5 Django版本:1.11.1 jinja2版本:2.9.6 为何要更换 DTL 先来谈谈Django的模板引擎,找了下,...