对于一个用数组实现的普通表,通常情况C语言不允许对数组的长度进行动态定义。所以我们需要对表空间的最大值进行预估。而这样容易浪费大量的空间。并且,数组表所花费的时间复杂度,也是高昂的,例如做插入与删除算法时,在某个位置插入一个新的元素,这需要后面的所有元素后移一个位置,则做插入与删除算法时,最坏情况的时间复杂度为O(n)。所以我们引入一个新的线性表“链表”
链表的一般想法(单链表)
链表存储结构:
链表就是通过next指针将表中的每个结点连接起来,每个结点中含有一个data域和next指针域,其中指针域存放着下一个元素的地址。这样做,只加了next域的空间,实现了可动态定义。并且也减少了时间复杂度。代码如下
typedef int Elemtype;
typedef struct LNode
{
Elemtype data;
struct LNode *next;
}LNode, Linklist;
链表初始化:
我们使用malloc去创建一个元素,然后让next=NULL就可以了。代码如下
void initlist(Linklist L)
{
L = (LNode *)malloc(sizeof(LNode));
if( !L )
{
exit(0);
}
L->next = NULL;
}
链表查找:
首先创建一个Find函数,它返回某个结点在表中的位置。代码如下
Linklist Find(Linklist L, Elemtype x)
{
Linklist P;
P = L->next;
while( p!= NULL && P->data !=x )
{

文章介绍了链表作为数组替代方案的优势,包括动态定义长度和降低时间复杂度。通过C语言展示了链表结构、初始化、查找、插入、删除以及计算长度等操作。
最低0.47元/天 解锁文章
763

被折叠的 条评论
为什么被折叠?



