山b东大学数据结构课件.pptVIP

  • 6
  • 0
  • 约5.14千字
  • 约 23页
  • 2016-11-29 发布于湖南
  • 举报
山b东大学数据结构课件

例题: 1、描述以下三个概念的区别:头指针,头结点,首元结点 (第一个元素结点)。 【解答】 头指针是指向链表中第一个结点(头结点或首元结点)的指针;在首元结点之前附设的一个结点称为头结点;首元结点是指链表中存储线性表中第一个数据元素结点。若链表中附设头结点,则不管线性表是否为空,头指针均不为空,否则表示空表的链表的头指针为空。 例题: 2、简述线性表的两种存储结构的主要优缺点及各自适用的场合。 【解答】 顺序存储可以按位置直接存取数据元素,方便灵活,效率高,但插入、删除操作是将引起元素移动,降低了效率;链式存储元素存储采用动态分配,利用率高,但需增设表示结点之间有序关系的指针域,存取数据元素不如顺序存储方便,但结点的插入、删除操作十分简单。 顺序存储适用于线性表中元素数量基本稳定,且很少进行插入和删除,但要求以最快的速度存取线性表中的元素的情况;而链式存储适用于频繁进行元素的动态 插入或删除操作的场合。 【分析】 线性表的两种主要存储结构各有其优点和缺点,不能简单地说哪个好哪个差,要根据实际问题和其适用的场合使用。 例题: 3、下面关于线性表的叙述中,错误的是 A)线性表采用顺序存储,必须占用一片连续的存储单元。 B)线性表采用顺序存储,便于进行插入和删除操作。 C)线性表采用链接存储,不必占用一片连续的存储单元 D)线性表采用链接存储,便于插入和删除操作。 4、下述哪一条是顺序存储方式的优点? A)存储密度大 B)插入运算方便 C)删除运算方便 D)可方便地用于各种逻辑结构的存储表示 【答案】 3、B 【答案】 4、A 5、以下关于链式存储结构的叙述中哪一条是不正确的? A) 结点除自身信息外还包括指针域,因此存储密度小于 顺序存储结 构 B) 逻辑上相邻的结点物理上不必邻接 C) 可以通过计算直接确定第i个结点的存储地址 D) 插入、删除运算操作方便,不必移动结点 6、单链表的每个结点中包括一个指针next,它指向该结点的后继结点。现要将指针q指向的新结点插入到指针p指向的单链表结点之后,下面的操作序列中哪一个是正确的? A)q=p- next; p- next=q- next B)p- next=q- next; q=p- next C)q- next=p- next; p- next=q; D)p- next=q; q- next=p- next 【答案】 5、C 【答案】 6、C Status Insert_Sq( SqList va, ElemType x ) { // 已知顺序表 va 中元素递增有序,将x插入到 适当位置,并保持原表的有序性 if (va.length = va.listsize){ newbase=(ElemType *)realloc(va.elem, (va.listsize+LISTINCREMENT)*sizeof(ElemType)); if(!newbase) exit(OVERFLOW); va.elem=newbase;va.listsize+=LISTINCREMENT; } i = 0; while (iva.length x=va.elem[i]) i++; for ( j=va.length-1; j=i; j-- ) va.elem[j+1] = va.elem[j]; // 右移所有值x的元素 va.elem[i] = x; va.length++; return OK; } //Insert_Sq 题 2.11 返回 Status Insert_Sq( SqList va, ElemType x ) { // 已知顺序表 va 中元素递增有序,将x插入到 适当位置,并保持原表的有序性 if (va.length = va.listsize){ newbase=(ElemType *)realloc(va.elem, (va.listsize+LISTINCREMENT)*sizeof(ElemType)); if(!newbase) exit(OVERFLOW); va.elem=newbase;va.listsize+=LISTINCREMENT; } i = va.length-1; while (i=0 xva.elem[i]){ va.elem[i+1] = va.elem[i]; // 右移所有值x的元素 i--;} v

文档评论(0)

1亿VIP精品文档

相关文档