void sort(DLinkNode * &L) //1
{ //2
DLinkNode p,pre,*q; //3
p=L-
L->next->next=NULL; //5
while(p!=NULL) //6
{ //7
q=p->next; //8
pre=L; //9
while(pre->next!=NULL&&pre->next->data
pre=pre->next; //11
p->next=pre->next; //12
if(pre->next!=NULL) //13
pre->next->prior=p; //14
pre->next=p; //15
p->prior=pre; //16
p=q; //17
} //18
} //19
第10行到第17行,p->next=pre->next; p->next->prior=p; pre->next=p; p->prior=pre;这几句的作用不太明白。
第12行p->next=pre->next应该是在pre结点之后插入结点p。
if语句判断pre结点是否为空,但if条件语句后的14-17不太明白具体是什么功能。
第17行应该是扫描剩下的结点
void CreateListR(LinkList &L, int n) //1
{ //2
int i; //3
L=new LNode; //4
LinkList p,r; //5
r=L; //6
for(i=0;i<n;i++){ //7
p=new LNode; //8
cin>>p->data; //9
r->next=p; //10
r=p; //11
} //12
r->next=NULL; //13
} //14
第6,10,11,13行不太懂。第6行应该是让r始终指向尾结点.。第10,11不明白具体是如何实现的。
第13 行应该是将r结点置为空,但不明白为什么要置为空.。
原文:https://www.cnblogs.com/yyk-123/p/10597215.html