相关疑难解决方法(0)

如何仅使用两个指针反转单链表?

我想知道是否存在一些逻辑来仅使用两个指针来反转链表.

以下用于使用三个指针(即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;
}
Run Code Online (Sandbox Code Playgroud)

还有其他替代方法来反转链表吗?在时间复杂度方面,逆转单链表的最佳逻辑是什么?

c algorithm linked-list data-structures singly-linked-list

109
推荐指数
4
解决办法
26万
查看次数