作业线性表练习

线性表练习

1-1对于顺序存储的长度为N的线性表,访问结点和增加结点的时间复杂度分别对应为O(1)和O(N)。T
作者: DS课程组单位: 浙江大学1-1答案正确(2 分)

1-2对于顺序存储的长度为N的线性表,删除第一个元素和插入最后一个元素的时间复杂度分别对应为O(1)和O(N)。F
作者: 徐镜春单位: 浙江大学1-2答案正确(2 分)

1-3循环链表不是线性表。F
作者: 李廷元单位: 中国民用航空飞行学院1-3答案正确(2 分)

1-4顺序存储的线性表可以随机存取。T
作者: 李廷元单位: 中国民用航空飞行学院1-4答案正确(2 分)

1-5链式存储的优点是插入、删除元素时不会引起后续元素的移动,缺点是只能顺序访问各元素。T
作者: DS课程组单位: 临沂大学1-5答案正确(2 分)

2-1在NNN个结点的顺序表中,算法的时间复杂度为O(1)的操作是:A
A.访问第iii个结点(1≤i≤N1\le i\le N1≤i≤N)和求第iii个结点的直接前驱(2≤i≤N2\le i\le N2≤i≤N)
B.在第iii个结点后插入一个新结点(1≤i≤N1\le i\le N1≤i≤N)
C.删除第iii个结点(1≤i≤N1\le i\le N1≤i≤N)
D.将N个结点从小到大排序
作者: DS课程组单位: 浙江大学2-1答案正确(2 分)

2-2若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用哪种存储方式最节省时间? D
A.双链表
B.单循环链表
C.带头结点的双循环链表
D.顺序表
作者: DS课程组单位: 浙江大学2-2答案正确(2 分)

2-3下面的叙述正确的是( )。D
A.线性表在链式存储时,查找第i个元素的时间同i的值成反比
B.线性表在链式存储时,查找第i个元素的时间同i的值无关
C.线性表在顺序存储时,查找第i个元素的时间同i 的值成正比
D.线性表在顺序存储时,查找第i个元素的时间同i的值无关
作者: DS课程组单位: 临沂大学2-3答案正确(2 分)

2-4设h为不带头结点的单向链表。在h的头上插入一个新结点t的语句是:D
A.h=t; t->next=h->next;
X.t->next=h->next; h=t;
C.h=t; t->next=h;
D.t->next=h; h=t;
作者: DS课程组单位: 浙江大学2-4答案正确(2 分)

2-5带头结点的单链表h为空的判定条件是:B
A. h == NULL;
B.h->next == NULL;
C.h->next == h;
D.h != NULL;
作者: DS课程组单位: 浙江大学2-5答案正确(2 分)

5-1合并两个排序的整数数组A和B变成一个新的数组。例如,给出A={1,2,3,4},B={2,4,5,6},则合并后的数组为 {1,2,2,3,4,4,5,6}。

#include <stdio.h>
#include <iostream>
#include <vector>
using namespace std;

class Solution {
public:
    /** * @param A and B: sorted integer array A and B. * @return: A new sorted integer array */
    vector<int> mergeSortedArray(vector<int> &A, vector<int> &B) {
        vector<int> result;
        int lena = A.size();
        int lenb = B.size();
        int ia = 0, ib = 0;
        while (ia < lena && ib < lenb)
        {
            int val_a = A[ia];
            int val_b = B[ib];
            int val;
            if (val_a <= val_b) {val = val_a; ia++;}
            else {val = val_b; ib++;}
            result.push_back(val)(4);
        }
        while (ia < lena)
        {
            result.push_back(A[ia]);
            ia++(3);
        }
        while (ib<lenb(3))
        {
            result.push_back(B[ib]);
            ib++;
        }
        return result;
    }

5-2下列代码的功能是返回带头结点的单链表L的逆转链表。

List Reverse( List L )
{
    Position Old_head, New_head, Temp;
    New_head = NULL;
    Old_head = L->Next;

    while ( Old_head )  {
        Temp = Old_head->Next;
        Old_head->Next=Now_head(3);  
        New_head = Old_head;  
        Old_head = Temp; 
    }
    L->Next=New_head(3);
    return L;
}
全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务