比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;
}
}