重点习题解答线性表自测题讲解.pptxVIP

  • 6
  • 0
  • 约2.71千字
  • 约 21页
  • 2022-09-25 发布于北京
  • 举报
线性表 自测题讲解 一、选择题 1.A 2.B 3.C 4.A 5. D 6.D 7.D 8.B  9.B,C  10.C  11.C 12.C 13.A 14.B 15.B 4. 若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用( A )存储方式最节省时间。 A.顺序表      B.双链表        C.带头结点的双循环链表     D.单循环链表 5. 某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用( D )存储方式最节省运算时间。 A.单链表      B.仅有头指针的单循环链表     C.双链表       D.仅有尾指针的单循环链表 6. 设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用( D )最节省时间。 A. 单链表   B.单循环链表   C. 带尾指针的单循环链表   D.带头结点的双循环链表 10. 若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间复杂度为( C )(1=i=n+1)。 A. O(0)      B. O(1)         C. O(n)          D. O(n2) 在单链表指针为p的结点之后插入指针为s的结点,正确的操作是:(    )。 A.p-next=s;s-next=p-next;  B. s-next=p-next;p-next=s; C.p-next=s;p-next=s-next;  D. p-next=s-next;p-next=s; 14. 在单链表指针为p的结点之后插入指针为s的结点,正确的操作是:(B)。 A.p-next=s;s-next=p-next;  B. s-next=p-next;p-next=s; C.p-next=s;p-next=s-next;  D. p-next=s-next;p-next=s; L a1 a2 an ^ … a s s-next = p-next; p-next = s; p q 15. 对于一个头指针为head的带头结点的单链表,判定该表为空表的条件是(B ) A.head==NULL  B.head-next==NULL    C.head-next==head   D.head!=NULL 试编写在带头结点的单链表中删除(一个)最小值结点的(高效)算法。 void delete(Linklist L) 思想: 先遍历链表,求得最小值节点及前驱,遍历结束后删除 Linklist Delete (Linklist L) { p=L-next; //p为遍历指针 pre=L; // 最小值结点的前驱 q=p; //最小值结点 while(p-next !=null) { If(p-next-data pre-next-data) { pre=p; q=p-next;} p=p-next; } pre-next = q-next; free(q); } 已知线性表(a1 a2 a3 …an)按顺序存于内存,每个元素都是整数,试设计用最少时间把所有值为负数的元素移到全部正数值元素前边的算法:例:(x,-x,-x,x,x,-x …x)变为(-x,-x,-x…x,x,x)。 思想: 从左到右找到正数A.data[i],从右到左找到负数A.data[j],将两者交换。循环这个过程直到i大于j为止。 已知长度为n的线性表A采用顺序存储结构,请写一时间复杂度为0(n)、空间复杂度为0(1)的算法,该算法删除线性表中所有值为item的数据元素。 思想: 解法1:元素间位置改变。同上题思想,从两端向中间移动,遇到值为item的元素,直接将右端元素左移至值为item的元素 已知长度为n的线性表A采用顺序存储结构,请写一时间复杂度为0(n)、空间复杂度为0(1)的算法,该算法删除线性表中所有值为item的数据元素。 思想: 解法2:遍历的过程中相邻元素依次比较并移动 有序表的合并 算法: 按顺序将lb的元素插入la中 lb b1 b2 bm ^ … pb pc,la,lc a1 a2 an ^ … pa if (pa-data pb-data) { pc-next = pb; pc = pb; pb=pb-next; } lb b1 b2 bm ^ … pb pc,la,lc a1 a2 an ^ … pa pc if (pa-data = pb-data) { pc-next =

文档评论(0)

1亿VIP精品文档

相关文档