把链表看成集合的话,那就是先将集合h中的元素先全部放到集合p中(只要将指针p指向h即可),再将集合h清空(只要将h指向NULL即可),p始终指向集合p中的第一个元素,然后每次从集合p中取第一个元素(让q指针指向它)将其插入到h的首部,直到集合p为空时结束。
Inverse(Node* &h) {
Node *p = h, *q; /*将集合h中的元素放入到集合p中,*/
h = NULL; /*将集合h清空*/
while(p) { /*当集合p不空*/
q = p; /*取出集合p中的第一个元素置入q*/
p = p->next; /*下一个元素成为新的集合首*元素/
q->next = h; /*将q从集合p中脱离下来并插入到集合h的前面*/
h = q;
}
}