Java教程

数据结构专题(二):2.4链表的插入操作,头插法

本文主要是介绍数据结构专题(二):2.4链表的插入操作,头插法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
  1. 头插法一:
    思想如下图:
    在这里插入图片描述

在这里插入图片描述
如下代码:

///头插法建立单链表
LinkListNode *Create_Front_Lklist(ElemType arr[],int length)
{
    LinkListNode *pHead,*p,*q;
    int i;
    pHead = (LinkListNode *)malloc(sizeof(LinkListNode));
    pHead->pNext = NULL;
    q = pHead->pNext;
    //头插的时候,必须逆序遍历顺序表
    for(i= length - 1;i>=0;i--)
    {
        p = (LinkListNode *)malloc(sizeof(LinkListNode));
        p->data = arr[i];
        p->pNext = q;     //使得新加入的结点传入了上一个结点
        pHead->pNext = p; //头结点指向了当前的新加入结点
        q = pHead->pNext; //让q指向当前的结点
    }

    return pHead;

}

2.头插法二:
思想:如下图
在这里插入图片描述
在这里插入图片描述

如下代码:

///头插法二:
LinkListNode *Create_Front2_LkList(ElemType arr[],int length)
{
    LinkListNode *pHead,*p,*q;
    //p是新加入结点,q是当前结点
    int i;
    q = NULL;
    for(i = length-1;i>=0;i--)
    {
        p = (LinkListNode *)malloc(sizeof(LinkListNode));
        p->data = arr[i];
        p->pNext = q;
        q = p;
    }
    pHead = (LinkListNode *)malloc(sizeof(LinkListNode));
    pHead->pNext =  q;
    return pHead;
}

3.头插法三:
思想如下图:
在这里插入图片描述
如下代码:

///头插法三:
LinkListNode *Create_Front3_LkList(ElemType arr[],int length)
{
    LinkListNode *pHead,p;
    int i;
    pHead = (LinkListNode *)malloc(sizeof(LinkListNode));
    pHead->pNext = NULL;
    for(i = length-1;i>=0;i--)
    {
        p = (LinkListNode  *)malloc(sizeof(LinkListNode));
        p->data = arr[i];
        p->pNext = pHead = pNext;
        pHead->pNext = p;
    }
    //之所以我们的方法三可以节省方法一中的一个变量q
    //原因是:pHead不发生变化,而pHead中的pNext始终作为当前结点的指针
    return pHead;
}
这篇关于数据结构专题(二):2.4链表的插入操作,头插法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!