起源
链表的出现,是因为在许多业务场景中,需要进行增、删操作,如果使用数组进行,要么造成大量数据移动,要么造成大量存储空间浪费。因此链表应运而生。
链表是线性表的一种,它如同锁链一般,每个结点包括两个部分:一个是存储数据元素的数据域(可能存储多个不同类型的数据),另一个是存储下一个结点地址的指针域。 非常便于增删操作,当然也因为是链式结构就造成了一般的链表并不具备像数组那样直接通过数组下标随机访问的能力。
定义
typedef struct Node{
int data;
struct Node *next;
}LNode, *LinkList;
int main()
{
LNode point1 = {1,NULL};
}
链表与数组的对比
数组:
int i;
int array[] = {1,2,3};
for(i=0;i<sizeof(array)/sizeof(array[0]);i++){
printf("array[%d]=%d\n",i,array[i]);
}
:Wq
链表
LNode point1 = {1,NULL};
LNode point2 = {2,NULL};
LNode point3 = {3,NULL};
point1.next = &point2;
point2.next = &point3;
printf("p1data=%d,p2data=%d,p3data=%d\n",point1.data,point1.next->data,point1.next->next->data);