Liangqingooo 2023-03-27 19:04 采纳率: 73.9%
浏览 187
已结题

带头结点的双链表数据逆置

编写一个函数,实现将一个带头结点的双链表表数据逆置,代码该怎么下手思考呢?

  • 写回答

3条回答 默认 最新

  • qzjhjxj 2023-03-27 20:01
    关注

    供参考:

    //带头结点的双向链表的就地逆置
    void invert(DuLinkList*& L)
    {
        DuLinkList* q;
        DuLinkList* p = L->next; // 将 p 指向链表 L 的第一个结点,同时将头结点L从链表中脱离
        L->next = NULL;          // 成一个独立的结点
        while (p != NULL) // 此时 p 指向链表的第一个结点
        {
            q = p->next; // q 指向链表的第二个结点,即 p结点的下一个结点
            p->next = L->next; //头插法将第一个结点 p 链入头结点 L
            p->prior = q;  //将 p 结点前驱指针修改为指向 第二个结点 q  
            L->next = p; //头插法将第一个结点 p 链入头结点 L
            p = q; //上述动作完成后,让 p 指向第二个结点 q ,准备第二个结点的 逆置
        }
    }
     
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月19日
  • 已采纳回答 10月19日
  • 修改了问题 3月27日
  • 创建了问题 3月27日