美文网首页
原地旋转链表

原地旋转链表

作者: SK_Wang | 来源:发表于2020-04-09 17:16 被阅读0次

    设计一个算法,将链表中所有节点的链接方向"原地旋转",即要求仅仅利用原表的存储空间. 换句话说,要求算法空间复杂度为O(1);

    要求:

    • 算法空间复杂度为O(1)

    示例:

    输入:0->2->4->6->8->10
    输出:10->8->6->4->2->0
    

    解题思路:

    要求算法空间复杂度为O(1),即不能开辟新的空间,只能考虑改变指针指向,参考前插法的思想。

    复杂度分析:

    • 空间复杂度 O(1)

    代码:

    typedef struct Node{
        int data;
        struct Node *next;
    } Node;
    typedef struct Node * LinkList;
    
    void Inverse(LinkList *L) {
        LinkList p, temp;
        p = (*L)->next;
        (*L)->next = NULL;
        while (p) {
            temp = p->next;
            p->next = (*L)->next;
            (*L)->next = p;
            p = temp;
        }
    }
    
    

    相关文章

      网友评论

          本文标题:原地旋转链表

          本文链接:https://www.haomeiwen.com/subject/mencmhtx.html