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

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

头插法:显然,我们就是将新结点逐一地插入head前;

特点:我们顺序地输入数据存入结点中,最后由于head在后面,所以链表要从head开始读取;

图像

用图像和代码理解链表的头插法和尾插法(单链表)_第1张图片

核心代码:

for (i=0;i

{

        new*newp=(newnode*)malloc(sizeof(newnode));

        scanf("%d",&p->data);

        newp->next=head;

        head=newp;

}

head=newp;

 尾插法:尾插法就是把新结点依次连接在最后;

 特点:顺序输入数据,顺序读取,输出数据;

 图像:

用图像和代码理解链表的头插法和尾插法(单链表)_第2张图片

核心代码:

head=p=newp=NULL;

for (i=0;i

{

        newnode* newp=(newnode*)malloc(sizeof(newnode));

        p->next=newp;

        p=newp;

}

最后输出就好;

辨析:(这里可以结合图片理解)

 在头插法中只有newp,head;但是在尾插法中有newp,head,p;

其中不一样的就是p;

因为在头插法中head是链表头的同时也可以作为移动的指针,所以没必要用另外的移动指针p;但是在尾插法中head是链表头,不可以移动,所以需要一个另外的移动指针p;

你可能感兴趣的:(链表,数据结构)