? ? ? ? 我们经常会遇到链表创建的问题,我们有头插法和尾插法;
头插法:显然,我们就是将新结点逐一地插入head前;
特点:我们顺序地输入数据存入结点中,最后由于head在后面,所以链表要从head开始读取;
图像:
核心代码:
for (i=0;i<n;i++)
{
? ? ? ? new*newp=(newnode*)malloc(sizeof(newnode));
? ? ? ? scanf("%d",&p->data);
? ? ? ? newp->next=head;
? ? ? ? head=newp;
}
head=newp;
?尾插法:尾插法就是把新结点依次连接在最后;
?特点:顺序输入数据,顺序读取,输出数据;
?图像:
核心代码:
head=p=newp=NULL;
for (i=0;i<n;i++)
{
? ? ? ? newnode* newp=(newnode*)malloc(sizeof(newnode));
? ? ? ? p->next=newp;
? ? ? ? p=newp;
}
最后输出就好;
辨析:(这里可以结合图片理解)
?在头插法中只有newp,head;但是在尾插法中有newp,head,p;
其中不一样的就是p;
因为在头插法中head是链表头的同时也可以作为移动的指针,所以没必要用另外的移动指针p;但是在尾插法中head是链表头,不可以移动,所以需要一个另外的移动指针p;