用图像和代码理解链表的头插法和尾插法(单链表)

2024-01-02 22:24:40

? ? ? ? 我们经常会遇到链表创建的问题,我们有头插法和尾插法;

头插法:显然,我们就是将新结点逐一地插入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;

文章来源:https://blog.csdn.net/2303_79380171/article/details/135315891
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。