第2章线性表
二、判断
1. 链表中的头结点仅起到标识的作用。( 错 )
2. 顺序存储结构的主要缺点是不利于插入或删除操作。( 对)
3.线性表采用链表存储时,结点和结点内部的存储空间可以是不连续的。( 对 )
4.顺序存储方式插入和删除时效率太低,因此它不如链式存储方式好。( 错 )
5. 对任何数据结构链式存储结构一定优于顺序存储结构。( 错 )
6.顺序存储方式只能用于存储线性结构。( 错 )
7.集合与线性表的区别在于是否按关键字排序。( 错 )
8. 所谓静态链表就是一直不发生变化的链表。( 错 )
9. 线性表的特点是每个元素都有一个前驱和一个后继。( 错 )
10. 取线性表的第i个元素的时间同i的大小有关. ( 错 )
11. 循环链表不是线性表. ( 错 )
12. 线性表只能用顺序存储结构实现。( 错 )
13. 线性表就是顺序存储的表。( 错 )
14.为了很方便的插入和删除数据,可以使用双向链表存放数据。( 对 )
15. 顺序存储方式的优点是存储密度大,且插入、删除运算效率高。( 错 )
16. 链表是采用链式存储结构的线性表,进行插入、删除操作时,在链表中比在顺序存储结构中效率高。 ( 对 )
三、填空
1.当线性表的元素总数基本稳定,且很少进行插入和删除操作,但要求以最快的速度存取线性表中的元素时,应采用____顺序___存储结构。
2.线性表L=(a1,a2,…,an)用数组表示,假定删除表中任一元素的概率相同,则删除一个元素平均需要移动元素的个数是___(n-1)/2 _____。
3.设单链表的结点结构为(data,next),next为指针域,已知指针px指向单链表中data为x的结点,指针py指向data为y的新结点 , 若将结点y插入结点x之后,则需要执行以下语句: py->next=px->next; px->next=py
4.在一个长度为n的顺序表中第i个元素(1<=i<=n)之前插入一个元素时,需向后移动__ n-i+1
______个元素。
5.在单链表中设置头结点的作用是___主要是使插入和删除等操作统一,在第一个元素之前插入元素和删除第一个结点不必另作判断。另外,不论链表是否为空,链表指针不变。
6.对于一个具有n个结点的单链表,在已知的结点*p后插入一个新结点的时间复杂度为__O(1)______,在给定值为x的结点后插入一个新结点的时间复杂度为__O(n)______。
7.根据线性表的链式存储结构中每一个结点包含的指针个数,将线性链表分成_单链表_______和__多重链表_____;而又根据指针的连接方式,链表又可分成___(动态链表)_____和___静态链表_____。
8. 在双向循环链表中,向p所指的结点之后插入指针f所指的结点,其操作是f->next=p->next; f->prior=p; p->next->prior=f; p->next=f;
9. 在双向链表结构中,若要求在p 指针所指的结点之前插入指针为s 所指的结点,则需执行下列语句:
s^ .next:=p; s^ .prior:= p^.prior ;p^ .prior:=s;s^.prior^.next:=s;
10.链接存储的特点是利用__指针______来表示数据元素之间的逻辑关系。
11.顺序存储结构是通过__物理上相邻______表示元素之间的关系的;链式存储结构是通过___指针_____表示元素之间的关系的。
12. 对于双向链表,在两个结点之间插入一个新结点需修改的指针共 __4____个,单链表为____2___个。
13. 循环单链表的最大优点是:____从任一结点出发都可访问到链表中每一个元素____。
14. 已知指针p指向单链表L中的某结点,则删除其后继结点的语句是:u=p->next; p->next=u->next; free(u)
15. 带头结点的双循环链表L中只有一个元素结点的条件是:___ L->next->next==L _____
16. 在单链表L中,指针p所指结点有后继结点的条件是:__ p->next!=null
17.带头结点的双循环链表L为空表的条件是:___ L->next==L && L->prior==L_____。
18. 在单链表p结点之后插入s结点的操作是:___ s->next=p->next;p->next=s;____。