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;
      }

  • 相关阅读:
    JS-记住用户名【cookie封装引申】
    JS-cookie封装
    JS-比较函数中嵌套函数,可以排序【对象数组】
    JS-随机div颜色
    JS-过滤敏感词【RegExp】
    JS-提取字符串—>>普通方法VS正则表达式
    CSS- ie6,ie7,ie8 兼容性写法,CSS hack写法
    JS-【同页面多次调用】轮播特效封装-json传多个参数
    JS-【同页面多次调用】tab选项卡封装
    Redis主从同步
  • 原文地址:https://www.cnblogs.com/sjxbg/p/5749163.html
Copyright © 2011-2022 走看看