在长度为n的顺序表中查找元素e的时间复杂度为( )。
A.O(0)
B.O(1)
C.O(n)
D.O()
答案C,O(n);
已知线性表L采用顺序存储结构,如果每个元素占用4个存储单元,第九个元素的地址为144,则第一个元素的地址是( )
A.108
B.180
C.176
D.112
答案D,112;
如果顺序表中第一个元素存储地址是100,每个元素地长度为2,则第五个元素存储地址是( )。
答案:
(1) 108
在一个长度为n的线性表的第i (1≤i≤n+1)个元素之前插入一个元素,需要向后移动( )个元素,删除第i (1≤i≤n)个元素时,需要向前移动( ) 个元素。
答案:
(1) n-i+1
(2) n-i
(程序题)
请设计一个算法创建顺序表,已知数组 a=(1,2,1,2,3,2),编写一个主函数,将数组元素全部插入线性表L中,验证算法的正确性,运行结果为L=(1,2,1,2,3,2)。
正确答案:
class Sqlist: #顺序表类
def __init__(self): #构造方法
self.initcapacity=5 #初始容量设置为5
self.capacity=self.initcapacity
self.data=[None]*self.capacity #设置顺序表的空间
self.size=0 #设置顺序表的长度为0
def resize(self,newcapacity):
assert newcapacity>=0
olddata=self.data
self.data=[None]*newcapacity
self.capacity=newcapacity
for i in range(self.size):
self.data[i]=olddata[i]
def Create(self,a):
for i in range(0,len(a)):
if self.size==self.capacity: #出现上溢时
self.resize(2*self.size) #扩大容量
self.data[self.size]=a[i] #添加元素a[i]
self.size+=1 #添加一个元素后长度增1
def Display(self): #输出顺序表
for i in range(0,self.size):
print(self.data[i],end=' ')
print()
#主程序
a=(1,2,1,2,3,2)
L=Sqlist()
L.Create(a)
L.Display()
7(程序题)有一个递增有序的整数顺序表L,设计一个算法将整数x插入适当位置,以保持该表的有序性,并给出算法的实践复杂度。例如L=(1,3,5,7),插入x=6后L=(1,3,5,6,7)。
正确答案:
def Insert(L,x):
i=0
while i<L.getsize() and L[i]<x: #查找刚好>=x的元素序号 i
i+=1
L.Insert(i,x)
上述算法的时间复杂度为O(n)。