线性表练习题

  1. 总结一下线性表的特点

(1) 存在唯一的一个被称作“第一个”的数据元素,表头元素;

(2) 存在唯一的一个被称作“最后一个”的数据元素。表位元素;

(3) 除第一个之外,结构中的每个数据元素均只有一个前驱;

(4) 除最后一个外,结构中的每个数据元素均只有一个后继。

  1. 顺序表插入算法Insert(SqList *L,int i,ElemType e)实现过程中,如果有n个元素,在i位置插入,则需要向后移动多少个元素? 第一个移动的元素是哪个位置?最后一个移动的元素是哪个位置?

移动(n-i+1)个元素,第一个移动的是最后一个元素,最后一个移动的是第i个位置的元素的元素

  1. 顺序表删除算法Delete(SqList *L,int i)实现过程中,如果有n个元素,删除第i个元素,则需要向前移动多少个元素? 第一个移动的元素是哪个位置?最后一个移动的元素是哪个位置?

要移动(n-i)个元素,第一个移动第i+1个位置的元素,最后一个移动最后一个元素

  1. 总结一下顺序表的优缺点

优点:可以随机存储,节省空间开销

缺点:插入和删除时间复杂度太高,需要移动大量元素

  1. 构造先进先出单链表(也称为尾插法),新插入的元素在表头还是表尾?每次插入新结点时的操作包括哪几步

在表尾

步骤:1)建立一个新结点,指针为空

  1. 尾指针指向头结点
  2. 生成新节点,输入元素
  3. 插入到表尾
  4. r指针指向新的尾结点
  1. 构造后进先出单链表(也称为头插法),新插入的元素在表头还是表尾?每次插入新结点时的操作包括哪几步?

在表头

步骤:1)建立头结点,next域为空

  1. 生成新节点P
  2. 输入新的元素
  3. 插入到表头
  1. 在单链表中第i个位置插入新元素e,总结一下算法思路是什么?(用文字描述)

首先生成一个新节点x,数据域存入e,x的指针域指向第i+1个位置,第i-1个位置的结点指针域指向x

  1. 在单链表中删除第i个结点,总结一下算法思路是什么?(用文字描述)

将第i-1个结点的指针域指向第i+1个结点

  1. 在单链表中删除值为e的结点,总结一下算法思路是什么?(用文字描述)

从头结点开始顺着与e比较,若符合,则删除,若越界或链表为空返回错误值

  1. 有序单链表合并算法中,pa,pb,pc三个指针的作用是什么?如果pa->data大于pb->data,应该怎么办(给出代码)?如果pa->data小于pb->data,应该怎么办(给出代码)?

Pa和pb分别指向La表和Lb表当前待插入的结点位置,pc指向表Lc中最后一个结点

如果pa->data大于pb->datapc->next=pb,pc=pb,pb=pb->next;

pa->data小于pb->datapc->next=pa,pc=pa,pa=pa->next;

  1. 相比较单链表,单循环链表的区别是什么?优点是什么?

可以从任意位置查询到所有结点

优点是可以简化链表合并算法

  1. 双向链表结点包括几部分?分别存储的是什么信息?

三部分:两个指针域,一个数据域

分别存储直接前驱地址,直接后继地址,数据元素

  1. 如下图所示的双向循环链表中,在p指针指向的结点后面插入s指针指向的e结点,给出操作语句。

S->next=P->next;

P->next=S;

P->next->front=S;

S->front=P;

12、如下图所示的双向循环链表中,删除q指针指向的结点,给出操作语句。

 

 

  1. >next->front=p;
  2. >next=q->next;

Free(q);

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值