C语言 线性表和链表有什么区别

天啊,都乱了
if (i<1||i>L->length+1) return ERROR;
q=&(L->elem[i-1]);
for(p=&L->elem[L->length-1];p>=q;--p)
*(p+1)=*p;
*q=e;
++L->length;
return OK;
}/*ListInsert Before i */

看这个代码,感觉他就是把数组的地址copy了一下,实在没明白这也叫线性表
线性表和链表到底有什么区别,坐了半个多小时实在想不出来到底要怎么写

还有length=0;elem[-1]到底是什么东西

帮忙帮忙,说一下区别,还有上面那个问题
status ListInsert(List *L,int i,ElemType e) {
struct STU *p,*q;
if (i<1||i>L->length+1) return ERROR;
q=&(L->elem[i-1]);
for(p=&L->elem[L->length-1];p>=q;--p)
*(p+1)=*p;
*q=e;
++L->length;
return OK;
}/*ListInsert Before i */

线性表是最基本、最简单、也是最常用的一种数据结构。线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。线性表的逻辑结构简单,便于实现和操作。因此,线性表这种数据结构在实际应用中是广泛采用的一种数据结构。

顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构。线性表采用顺序存储的方式存储就称之为顺序表。顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。

链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,链表比较方便插入和删除操作。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-06-28
线性表一般以数组形式实现,在内存中连续存放。
链表以链表的形式实现,在内存中可以不连续存放。
第2个回答  推荐于2017-09-19
线性表有两种方式:
1.顺序线性表 (也就是用数组实现的,在内存中有顺序排列,通过改变数组大小实现)
2.链表 (不是用顺序实现的,用指针实现,在内存中不连续)

代码不全也不知道上面是做什么的,给你点提示吧
elem是线性表的基地址
length是线性表的长度

线性表的包含:
基地址
当前长度
总长度

每个表都有初始长度,如果超过了这个长度,可以用函数将这个长度加长本回答被提问者采纳
第3个回答  2019-02-23
在有序表中插入数据后不用再排序了:
1、找到要该插入数据的位置,使得线性表仍然有序;
2、将第1步找到位置后面的数据统一往后移动一位,给要插入数据腾出位置;
3、插入数据。
下面我给的是用数组实现的,数据都用简单int:
void
insert(int
a[],int
n,int
x)
{//在有序(递增)线性表a中插入x,a的长度是n;
int
i
,j;
for(i=0;i
=x)
break;
for(j=n;j>=i;j--)
a[j]=a[j-1];
a[i]=x;
}
相似回答