二维指针可以减少双向或单向链表的初始判断。

比C与指针的代码12.7还少五行。

传二维指针进去,在链表首插入的判断语句可免。


typedef struct doublelinkstu
{
    int value;
    string name;
    doublelinkstu * pre;
    doublelinkstu * next;
    doublelinkstu()
    {
        pre=NULL;
        next=NULL;
    };

} DoubleLink;


void mysortd3(DoubleLink ** headpoint ,DoubleLink * insertnode)
{
    DoubleLink * postNode=(*headpoint);
    DoubleLink * preNode=(*headpoint);
    int firstvalue=(*headpoint)->value;
    while((postNode=*headpoint)!=NULL&&postNode->value<insertnode->value)
    {
        preNode=postNode;
        headpoint=&(postNode->next);
    }

    insertnode->next=postNode;
    (*headpoint)=insertnode;//原因在于这句话,  如果while循环一次,headpoint就是head,但是如果是循环多次,headpoint被赋值为&(preNode->next),好NB的写法。
    if(postNode!=NULL)
    {
        postNode->pre=insertnode;
    }

    if(firstvalue!=preNode->value)
    {
        insertnode->pre=preNode;
    }
}

posted on 2017-08-20 23:03  shoutcharter  阅读(157)  评论(0编辑  收藏  举报

导航