30
如何仅使用两个指针来反转单链列表?
我想知道是否存在仅使用两个指针来反转单链列表的逻辑。 以下是用于逆转使用三个指针即单链表p,q,r: struct node { int data; struct node *link; }; void reverse() { struct node *p = first, *q = NULL, *r; while (p != NULL) { r = q; q = p; p = p->link; q->link = r; } first = q; } 还有其他替代方法可以反向链接列表吗?就时间复杂度而言,颠倒单个链表的最佳逻辑是什么?