zoukankan      html  css  js  c++  java
  • 链表中节点的计数及链表的反转

    1.链表中节点的计数

    int getnum(node * phead)
    {
        for(int i = 0; phead != NULL; i++,phead = phead->pNext)
        {
        }
    }这是一种装逼语句,有一个弊端就是执行完成之后,i  就不存在了。
    最好还是这么写
    int getnum(node *phead)
    {
        int i = 1;
        for(; phead != NULL; phead = phead->pNext)
        {
        i++;
        }
    }

    用递归怎么写
    int getnum(node *phead)
    {
        if(phead==NULL)
        {
            return 0;
        }
        else
        {
            return 1 + getnum(phead->pNext)
        }
    }


    2.链表的反转

    node *rev(node *phead)
    {
        if (phead==NULL || phead->pNext==NULL)
        {
            return NULL;
        }
        else
        {
            node *pre, *pcur, *pnext;//三个节点
            pre = pcur = pnext = NULL;//赋值表达式

            pre = phead;
            pcur = phead->pNext;
            while (pcur) //pcur!=null
            {
                pnext = pcur->pNext;//保存下一个节点
                pcur->pNext = pre;//前一个节点

                pre = pcur;
                pcur = pnext;//轮替

            }
            phead->pNext = NULL;
            phead = pre;//保存节点

            return phead;

        }
    }

    用递归的方式

    node *fanzhuan(node * phead)
    {
        if(phead==NULL || phead->pNext==NULL)
      {
          return phead;
      }
      else
      {
        node *pnext = phead->pNext;
        node *head = fanzhuan(pnext);
            pnext->pNext = phead;
        phead->pNext = NULL;

        return head;
      }

  • 相关阅读:
    77. Combinations
    76. Minimum Window Substring
    75. Sort Colors
    74. Search a 2D Matrix
    73. Set Matrix Zeroes
    72. Edit Distance
    71. Simplify Path
    70. Climbing Stairs
    线段树+欧拉函数——cf1114F
    区间dp——好题cf1132F
  • 原文地址:https://www.cnblogs.com/sjxbg/p/5749163.html
Copyright © 2011-2022 走看看