我想知道是否存在只使用两个指针来反转单链表的逻辑。
下面的代码使用三个指针(即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;
}是否有其他替代方案可以反转链表?就时间复杂度而言,反转单链表的最佳逻辑是什么?
发布于 2009-11-26 12:47:27
计算出你现在使用的算法的时间复杂度,很明显它是不能改进的。
https://stackoverflow.com/questions/1801549
复制相似问题