线性表用链式存储指针一定连续吗
‘壹’ 连续存储数据时,存储单元的地址()A.一定连续 B一定不连续 C不一定连续 D部分连续
A。
链式存储,存储空间可以不连续,但存储地址必连续。
链式存储设计时,各个不同结点的存储空间可以不连续,但是结点内的存储单元地址则必须连续。
typedef struct LNode {
int value; // value中存放结点值域,默认是int型
struct Lnode *next;//指向后继结点的指针
}LNode; // 定义单链表结点类型
上述定义了一个结构体,包括两部分,一是值域,二是指针域;每当定义一个结点都会产生这两个区域。
这个value与next域必须是挨着的,称这个结点为内部。
(1)线性表用链式存储指针一定连续吗扩展阅读:
由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而顺序表相应的时间复杂度分别是O(logn)和O(1)。
使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大。
‘贰’ 线性表的链式存储结构是一种()存储结构
线性表的链式存储结构是一种顺序存储的存储结构。
线性表的链式存储结构中的每一个存储结点不仅含有一个数据元素,还包括指针,每一个指针指向一个与本结点有逻辑关系的结点,此类存储方式属于顺序存储;线性表是最基本、最简单、也是最常用的一种数据结构。线性表(linear list)是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列。
(2)线性表用链式存储指针一定连续吗扩展阅读:
线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的(注意,这句话只适用大部分线性表,而不是全部。
比如,循环链表逻辑层次上也是一种线性表(存储层次上属于链式存储,但是把最后一个数据元素的尾指针指向了首位结点)。
‘叁’ 链表中每个节点所占用的储存空间是连续的,但节点之间在空间上可以连续也可以不连续 对这句话不是很明白
一个链表有很多个节点,各个节点之间通过指针连接起来,所以各个结点之间的位置可以不连续,也就是可以放在不同的位置,所以在空间上可以是不连续的;但对于一个节点,因为节点内部是一个整体,所以就要占用连续的存储空间。
队列是先进先出的栈是先进后出的都是线性表线性表是最基础、最常用的数据结构,线性表中数据元素都是一对一的对应关系。可以不连续,它的存储空间分两段,一段存放数据,另一段存放着地址,链表是通过地址将数据串联起来的数组必须是连续的存储空间。
(3)线性表用链式存储指针一定连续吗扩展阅读:
一个链表或者多个链表使用独立的存储空间,一般用数组或者类似结构实现,优点是可以自动获得一个附加数据:唯一的编号,并且方便调试;缺点是不能动态的分配内存。当然,另外的在上面加一层块状链表用来分配内存也是可以的,这样就解决了这个问题。
这种方法有时候被叫做数组模拟链表,但是事实上只是用表示在数组中的位置的下标索引代替了指向内存地址的指针,这种下标索引其实也是逻辑上的指针,整个结构还是链表,并不算是被模拟的(但是可以说成是用数组实现的链表)。