https://www.cnblogs.com/longhai3/longhai

数据结构>>顺序存储结构习题

Posted on 2022-02-12 22:13  凡是过去,皆为序曲  阅读(657)  评论(0编辑  收藏  举报

2-1-1顺序表是线性表的(      )存储表示。

A. 有序            B. 连续         C. 数组         D. 顺序存取

2-1-2顺序表的优点是(      )。

A. 插入操作的时间效率高                B. 适用于各种逻辑结构的存储表示

C. 存储密度(存储利用率)              D. 删除操作的时间效率高

2-1-3若设一个顺序表的长度为n,那么,在表中顺序查找一个值为x的元素时,在等概率的情况下,查找成功的数据平均比较次数为(     ) 。

A.n           B.NULL         C. (n+1)/2          D. (n-1)/2

2-1-4在长度为n的顺序表的表尾插入一个新元素的时间复杂度为(     )。

A.O(n)            B.O(1)            C. O(n^2)             D. O(log2n)

2-1-5在长度为n的顺序表中删除一个元素的时间复杂度为(  )。

A.O(1)             B.O(log2n)             C.O(n)             D.O(n^2)

2-1-6将两个各有n个元素的递增有序顺序表归并成一个有序顺序表,其最少的比较次数是(  )。

A.n             B.2n-l             C.2n             D.n-1

2-2-1对于顺序表L,指出以下算法的功能。

void fun1(SqList *&L)  

{ // 形参传递为指针的引用方式

    int i, j=0;

    for(i=1; i<L->length; i++)

        if (L->elem[i]>L->elem[j])

            j=i;

    for(i=j; i<L->length-1; i++)

        L->elem[i]=L->elem[i+1];

    L->length--;

}

删除表中最大值

2-2-2对于顺序表L,指出以下算法的功能。

void fun2(SqList *&L, ElemType x)

{

    int i, j=0;

    for (i=1; i<L->length; i++)

        if (L->elem[i]<=L->elem[j])

            j=i;

    for (i=L->length; i>j; i--)

        L->elem[i]=L->elem[i-1];

    L->elem[j]=x;

    L->length++;

}

 

在最小值前插入数值x

2-3下面算法的功能是:将元素x插入到一个有序(从小到大排序)顺序表的适当位置上,并保持有序性。请在空白处填入正确的语句。

void Insert(SqList *&L,  ElemType x)

{

    int i=0,j;

    while (_______1_________&& L->elem[i]<x) i++;

    for (_________2_________; j>=i; j--)

        L->elem[j+1]=L->elem[j];

    L->elem[i]=x;

    _______3_________;

}

1              i<L->length

2              j=L->length-1

3              L->length++

2-4下面算法的功能是:设有一个线性表(a1,a2,a3,...,an-1,an)存放在一个顺序表中,将这个线性表原地逆置,即将顺序表的n个数据元素置换为(an,an-1,...,a2,a1)。请在空白处填入正确的语句。

void Reverse(SqList &L)

{

    if(______①_______)

        return;

    ElemType temp;

    for(int i = 1; i <= ________②_______; i++) {

        temp = ______③_______;

        L.elem[i - 1] = L.elem[L.length - i];

        _________④_________ = temp;

    }

}

L.length==0

(L.length+1)/2

L.elem[i - 1]

L.elem[L.length - i]

 

 

2-5下面算法的功能是:若一个顺序表 L 中所有元素为整数,算法调整该顺序表,使其中所有小于零的元素放在所有大于等于零的元素的前面。请在空白处填入正确的语句。

void fun(SqList *&L)

{

    int i = 0, j = ______①_________;

    while(________②________) {

        while(L->elem[i] < 0)

            _____③_________;

        while(L->elem[j] >= 0)

            ______④__________;

        if(______⑤_______)                        

            swap(L->elem[i], L->elem[j]);

    }

}

L->length-1

i< L->length

i++

j--

i<j

随心,随记

https://www.cnblogs.com/w1hg/331817