节点
typedef struct LNode
{
int data;
struct LNode *next;
}LinkList;
头插法
```c
void creatlistF(LinkList *L,int a[],int n) //头插法建立链表
{
LinkList *s;
int i;
L=(LinkList*)malloc(sizeof(LinkList));
L->next=NULL;
for(i=0;i<n;i++)
{
s=(LinkList*)malloc(sizeof(LinkList));
s->data=a[i];
s->next=L->next;//第一次L->next为空则s->next=NULL,第二次的时候执行图中 ① 的操作
L->next=s;//第一次建立一个节点,第二次执行图中 ② 的操作
}
}
头插法主要核心是s->next=L->next; L->next=s;
值得注意的是第一次循环的操作只是给头插入了一个结点
尾插法
void creatlistT(LinkList *L,int a[],int n) //尾插法建立链表
{
LinkList *s,*r;
int i;
L=(LinkList*)malloc(sizeof(LinkList));
L->next=NULL;
r=L;
for(i=0;i<n;i++)
{
s=(LinkList*)malloc(sizeof(LinkList));
s->data=a[i];
r->next=s;
r=s;
}
}
尾插法比较简单就是新建立一个尾节点LinkList *r指向头节点LinkList *L,用r作为链表的尾巴,每次插入一个新的结点时代替新结点的位置。