C语言线性表基本操作和使用介绍
1线性表基本操作
InitList(*L): 初始化操作,建立一个空的线性表L。 ListEmpty(L): 判断线性表是否为空表,若线性表为空,返回true,否则返回false。 ClearList(*L): 将线性表清空。 GetElem(L,i,*e): 将线性表L中的第i个位置元素值返回给e。 LocateElem(L,e): 在线性表L中查找与给定值e相等的元素,如果查找成功,返回该元素在表中序号表示成功;否则,返回0表示失败。 ListInsert(*L,i,e): 在线性表L中第i个位置插入新元素e。 ListDelete(*L,i,*e): 删除线性表L中第i个位置元素,并用e返回其值。 ListLength(L): 返回线性表L的元素个数。
2 顺序存储结构为何会造成存储空间的“碎片化”
顺序存储结构的缺点:插入和删除需要移动大量的对象;存储设备的碎片化;当线性表过大时,很难确定长度。
3静态链表有什么优点?适用哪些地方?
静态链表的初始长度一般是固定的,在做插入和删除操作时,不需要移动元素,仅需要修改指针,故仍具有链式存储结构的主要优点;一般在没有指针的语言中,静态链表是数组实现链表的一种方法
4循环链表和双向链表的优点在哪
双向链表由于另外存储了指向链表内容的指针,并且可以会修改相邻的结点,有时候第一个结点可能会被删除,或者在之前添加一个新的结点,这时候就要修改指向首个节点的指针。
有一种可以消除这种特殊情况的方法是在最后一个节点之后,第一个结点之前储存一个永远不会被删除或移动的虚拟结点,形成循环链表。这个虚拟结点之后的结点是真正的第一个结点,这种情况通常可以用这个虚拟结点直接表示这个链表
5链式存储结构有哪些类型
线性存储结构有顺序,连接,索引,散列四种;非线性存储结构有树形存储结构,图形存储结构
6顺序存储结构中,数据长度和线性表长度有什么区别
数组长度是存放线性表的存储空间的长度,存储分配后这个量一般是不变的;
线性表的长度是线性表中数据元素的个数,随着线性表插入和删除操作的进行,这个量是变化的
7双向链表删除元素时操作顺序能不能反了
只要在改动前把指针成员把指针成员保存在一个临时变量里就可以了,随便先改哪个都无所谓。
8顺序存储结构现在还有那些应用
若线性表需要频繁查找,很少进行插入和删除操作时,宜采用顺序存储结构
9 单链表
指针域中存储的信息称为指针或链。这两部分信息组成数据元素称为存储映像,或称为结点(Node)。n个结点链接成一个链表,即为线性表(a1, a2, a3, …, an)的链式存储结构。因为此链表的每个结点中只包含一个指针域,所以叫做单链表。
10 什么是指针域
链式存储结构中,除了要存储数据元素信息外,还要存储它的后继元素的存储地址(指针)。也就是说除了存储其本身的信息外,还需存储一个指示其直接后继的存储位置的信息。我们把存储数据元素信息的域称为数据域,把存储直接后继位置的域称为指针域。