数据结构专题(二):2.3链表插入元素,尾插法

在这里插入图片描述
因为结构内存的差异,所以有头插法和尾插法两种形式。
本章博客主要讲解头插法
操作流程如下图
在这里插入图片描述
如下代码:

///插入元素,在指定的位置插入给定的值
//因为链表这种结构的内存是由程序员管理的,因此他的建立有一定的运算方法
//尾插法建立单链表(将逻辑上的顺序表放入单链表的物理结构当中)
/*
顺序表:12,33,44,76,89,90(逻辑上的顺序表)=>单链表
本例中我们用数组表示这种顺序表
*/
//arr:传入的顺序表,length:顺序表的长度
LinkListNode *create_Real_LkList(ElemType arr[],int length)
{
    LinkListNode *pHead,*p,*q;  
    int i;//循环变脸用来遍历全部的顺序表

    pHead = (LinkListNode*)malloc(sizeof(LinkListNode));

    q = pHead;  //q是获得了当前链表的头结点,q保存了pHead同时通过q不断前移是的链表串联起来
    for(i=0;i<length;i++)
    {
        //获得一个单链表的结点,将这个结点加入到由pHead指向的链表当中
        p = (LinkListNode *)malloc(sizeof(LinkListNode));
        //p获得一个可以加入链表的结点单元
        p->data = arr[i];  //将顺序表的内容存入单链表的结点
        q->pNext = p;  //
        q = p;
    }
    p->pNext = NULL;
    return pHead; 
}

int main()
{
    ElemType Myseq[] = {1,2,3,4,5};
    create_Real_LkList(MySeq,5);
    return 0;   
}

尾插法总结:不断在声明了头结点的单链表之后,不断加入结点,直至最后一个结点的Next为NULL为止(1.动态获得pHead,2.用一个临时的指针变量q替代pHead,不断迁移,3.p是用来生成结点变量的,4.返回pHead来管理全部的链表。


版权声明:本文为weixin_43907175原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。