星期一, 五月 28, 2007

线性表:例2-1

问题描述:

假设利用两个线性表LA和LB分别表示集合A和B(即:线性表中的数据元素就是集合中的成员),现要求一个新的集合A = A U B。这就要求对线性表作如下操作:扩大表LA,将LB中存在而LA中不存在的数据元素插入到表LA中去。只要依次取得LB中每个数据元素,安其值查找表LA,若不存在,则插入之。

原书伪代码描述:

PROC union(VAR LA:Linear_list; LB:Linear_list);
{ 将所有在线性表LB中存在而线性表LA中不存在的数据元素插入到线性表LA中去 }

n:=LENGTH(LA); { 确定线性表LA的长度 }
FOR i:=1 TO LENGTH(LB) DO
[x:=GET(LB,i); { 取LB中第i个数据元素 }
k:=LOCATE(LA,x); { 在LA中进行搜索 }
IF k=0 THEN [INSERT(LA,n+1,x); n:=n+1]
{ 将LA中不存在的元素插入LA中,同时修改n的值 }
]
ENDP;

Python代码:

#!/usr/bin python
#Data Structure-Linear_list example 2-1

def union(LA,LB):
n = len(LA)
for i in range(n):
x = LB[i]
if not (x in LA):
LA.append(x)
return LA

if name == "main":
la = ['a','b','c','d']
lb = ['c','d','e','f','g']
print union(la,lb)