顺序表练习题

在长度为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)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值