本文实例为大家分享了python实现线性表顺序的具体代码,供大家参考,具体内容如下
线性表
1.抽象数据类型表示(adt)
类型名称:线性表
数据对象集:线性表是n(>=0)个元素构成的有序序列(a1,a2,….,an)
操作集:
2.线性表的顺序实现
1.表示方法:
其中100可以自己规定,last代表线性表的长度
1
2
3
4
5
|
# 线性表定义
class lnode( object ):
def __init__( self ,last):
self .data = [none for i in range ( 100 )]
self .last = last # 线性表长度12345
|
2.建立空的顺序表
1
2
3
4
5
6
7
8
9
|
# 1.初始化建立空的线性表
def makeempty(num):
ptrl = lnode(num)
return ptrl
# 测试建立空的线性表
s = makeempty( 10 )
print (s.data[ 0 :s.last])
print (s.last) 12345678910
|
测试结果:
3.按值查找
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# 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.插入操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# 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.删除操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
# 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])
|
测试结果:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/zhangwei15hh/article/details/78766305