数据结构与算法--线性表

线性表

1、线性表的长度是指线性表中元素的个数,随着线性表的插入和删除操作的进行而变化

2、数组的长度是指存放线性表的存储空间的长度,存储分配后,这个量一般是不变的

3、在任意时刻,线性表的长度应该小于等于数组的长度

4、在线性表的顺序存储结构中可以实现快速地随机存取,而在链式存储结构中则只能进行顺序存取(所谓随机存取,就是通过首地址和元素的位序号值可以在O(1)的时间内找到指定的元素)

5、顺序存储方式可用于存储线性结构和非线性结构:

常用的线性结构有:线性表,栈,队列,双队列,数组,串

常见的非线性结构有:二维数组,多维数组,广义表,树(二叉树等)

顺序表

1、在顺序表中逻辑相邻的元素,其对应的物理位置也是相邻的

2、顺序表的逻辑结构与物理结构是一致的

3、所谓随机存取,就是通过首地址和元素的位序号值可以在O(1)的时间内找到指定的元素

4、在顺序表上进行插入、删除操作时需要移动元素的个数与待插入或待删除元素的位置有关

5、删除第一个元素和插入第一个元素的时间复杂度均为O(n)(删除最后一个元素和插入最后一个元素的时间复杂度均为O(1)

6、对于顺序存储的长度为n的线性表,访问结点和增加结点的时间复杂度分别对应为O(1)O(n)

链表

1、在链表中逻辑相邻的元素,其对应的物理位置不一定是相邻的(链表的逻辑结构是连续的,物理结构不一定是连续的)

2、线性表采用链式存储表示时,所有结点之间的存储单元地址可以连续也可以不连续

3、不建议在头结点中存放数据,因为这样会导致在进行链表结点的插入、删除操作时的不便

4、寻找链表的第i个结点的时间复杂度为O(Length(L))

5、在具有n个结点的单链表中,访问结点的时间复杂度为O(n)

6、链表的插入和删除操作的时间复杂度取决于是否已经找到了要操作的位置:

找到→O(1)

未找到→O(n)

若某线性表最常用的操作是存储任一指定序号的元素和在最后进行插入和删除操作运算,则利用顺序表存储最节省时间

链表是采用链式存储结构的线性表,进行插入和删除操作时,在链表中比在顺序存储结构中效率高

判断题

1、对于顺序存储的长度为N的线性表,访问结点和增加结点的时间复杂度分别对应为O(1)O(N)

T

2、线性表采用链式存储表示时,所有结点之间的存储单元地址可以连续也可以不连续。

T

3、将长度分别为m,n的两个单链表合并为一个单链表的时间复杂度为O(m+n)

F         时间复杂度为O(1)

4、在具有头结点的链式存储结构中,头指针指向链表中的第一个元素结点。

F        头指针是指链表指向第一个结点的指针,若链表有头结点,则头指针就是指向链表头结点的指针。即头指针指向链表头结点(元素结点指带有元素的结点,不一定是头结点)。

5、若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用顺序表存储最节省时间。

T

6、线性表的唯一存储形式是链表。

F         线性表有两种基本的存储结构:顺序存储结构和链式存储结构。

7、对于顺序存储的长度为N的线性表,删除第一个元素和插入最后一个元素的时间复杂度分别对应为O(1)O(N)

F

删除第一个元素和插入第一个元素的时间复杂度均为O(N)

删除最后一个元素和插入最后一个元素的时间复杂度均为O(1)

8、在具有N个结点的单链表中,访问结点和增加结点的时间复杂度分别对应为O(1)O(N)

F         对于顺序存储的长度为N的线性表,访问结点和增加结点的时间复杂度分别对应为O(1)O(N)

9、若用链表来表示一个线性表,则表中元素的地址一定是连续的。

F         链表不一定是连续的(不一定是顺序存储)。

10、所谓随机存取,就是通过首地址和元素的位序号值可以在O(1)的时间内找到指定的元素。

T

11、在顺序表上进行插入、删除操作时需要移动元素的个数与待插入或待删除元素的位置无关。

F         在顺序表上进行插入、删除操作时需要移动元素的个数与待插入或待删除元素的位置有关。

12、在线性表的顺序存储结构中可实现快速的随机存取,而在链式存储结构中则只能进行顺序存取。

T         顺序存储的优点。

13、线性表的长度是指线性表所占用的存储空间的大小。

F

线性表的长度是指线性表中元素的个数,随着线性表的插入和删除操作的进行而变化。

数组的长度是指存放线性表的存储空间的长度,存储分配后,这个量一般是不变的。

在任意时刻,线性表的长度应该小于等于数组的长度。

14、线性表中每个元素都有一个直接前趋和一个直接后继。

F         线性表中除了第一个元素和最后一个元素外,每个元素都有一个直接前驱和一个直接后继。

15、循环链表不是线性表。

F

16、下列函数试图求链式存储的线性表的表长,是否正确?

int  Length ( List  *PtrL )
{    List  *p = PtrL;      
     int  j = 0;
     while ( p ) { 
           p++; 
           j++;                 
     }   
     return  j;
}

F         p++应当改为p=p->next。因为p++指在p所指向的地址上+1,而不是指向下一个结点。

17、在顺序表中逻辑上相邻的元素,其对应的物理位置也是相邻的。

T         物理位置上相邻,逻辑上不一定相邻。

18、在线性表的顺序存储结构中,插入和删除元素时,移动元素的个数与该元素的位置有关。

T         同11。

19、顺序存储方式只能用于存储线性结构。

F         也可用于存储非线性结构(二叉树)。

20、在顺序表中取出第i个元素所花费的时间与i成正比。

F      找到第i个元素与取出第i个元素所花费的时间成反比。

        找到第i个元素所花费的时间为O(1)

        取出第i个元素所花费的时间取决于i的大小,i越大,所花费的时间越短。

        因此在顺序表中取出第i个元素所花费的时间与i成反比。

21、顺序存储的线性表可以随机存取。

T        顺序存储的优点。

          顺序表是一种随机存取的存储结构。

          链表是一种顺序存取的存储结构。

22、顺序存储方式插入和删除时效率太低,因此它不如链式存储方式好。

F         各有优劣。

23、链表是采用链式存储结构的线性表,进行插入、删除操作时,在链表中比在顺序存储结构中效率高。

T         链式存储的优点。

24、在顺序表中,逻辑上相邻的元素,其物理位置必定相邻。

T         同17。

25、在N个结点的顺序表中访问第i(1<=i<=N)个结点和求第i(2<=i<=N)个结点直接前驱的算法时间复杂度均为O(1)

T         顺序表是一种随机存取的存储结构,所以访问节点的时间复杂度为O(1)。

你可能感兴趣的:(链表,数据结构)