【发布时间】:2010-12-20 13:38:28
【问题描述】:
我想知道是否存在一些逻辑来反转仅使用两个指针的单链表。
下面是使用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;
}
还有其他替代方案可以反转链表吗?就时间复杂度而言,反转单链表的最佳逻辑是什么?
【问题讨论】:
-
不是真的,那是两个队列而不是两个指针。
-
因为你是来帮忙的,而不是玩代表游戏?
-
GMan:就是这样,我不确定我是否在帮助任何人,即使是他,如果他不能坚持到底。span>
-
您正在帮助我们这些阅读并从问题和答案中获得一些东西的人。我发现它很有见地。
标签: c algorithm data-structures linked-list singly-linked-list