nodetype *invert(nodetype *h)//实现单链表逆置 { nodetype *p,*q,*r; if (len(h)<=1) {printf("逆置的单链表至少有俩个节点"); printf("\n"); return NULL; } else { p=h; q=p->next ; while (q!=NULL) { r=q->next ; q->next =p; p=q; q=r; } h->next =NULL; h=p; return h; } }
0(初始化)、q为每一步运算的主要节点位置,初始化为第一个; 1、r=q的后续,把q的后续记录下来; 2、q-》next=p,把q的后续指向p(也就是开始),换句话说,把q放在了最开始; 3、p=q,把新的开始设置为新插入的q(下一次循环时,他就是p了); 4、q=r,把下一步要进行运算的主要节点设置为r,也就是当前运算节点的下个节点。