zoukankan      html  css  js  c++  java
  • 【 数据结构(C语言)】线性表——链表反转

    方法1:使用3个指针遍历单链表,逐个结点进行反转。

    方法2:从第2个节点到第N个节点,依次逐节点插入到第head节点之后(针对有。

    法一:逐个结点反转

    1)将指针a,b,c依次赋值为连续的三个指针

    2)原链表的第一个结点翻转后为最后一个结点,将原链表的第一个结点的next 赋值NULL

     

    3)把b->next 赋值为a,改变指针方向; 将b 赋值为 c,a赋值为b,c赋值为c->next ,边界条件:赋值后的a 为空时,L->next = a; 更新新的表头

    LinkList ListReverse(LinkList &L)
    {
        LinkList a = L->next;
        LinkList b = a->next;
        LinkList c = b->next;
        a->next = NULL;
        int len = GetLength(L);
        while (len--)
        {
            b->next  = a;
            c = b;
            b = a;
            if(!a)
            {
                L->next=a;
            }
            else c=c->next;
        }
        return L;
    }
    

    法二:依次插入到头结点之后(代码针对有头结点的链表)

    如果是没有头结点的链表,从第2个节点到第N个节点,依次逐节点插入到第1个节点(head节点)之后,(N-1)次这样的操作结束之后将第1个节点挪到新表的表尾即可

    LinkList ListReverse2(LinkList &L)
    {
        int num;
        for (int i=2; i <= GetLength(L); i++)
        {
            ListDeteleByPos_L(L,i,num);
            ListInsert_L(L,1,num);
        }
        return L;
    }
    

     

  • 相关阅读:
    CSS关键词的值-currentColor关键字提示文字(当前颜色)
    DOM 对象方法
    CSS三种样式表
    html页面不使用缓存的代码
    DOM-----style属性对照表
    UISwitch属性
    UIImageView属性
    UIView属性
    UIScrollView
    UILabel属性
  • 原文地址:https://www.cnblogs.com/sxy-798013203/p/7774505.html
Copyright © 2011-2022 走看看