zoukankan      html  css  js  c++  java
  • 单链表逆转

    搜狐2013届校园招聘笔试题目是:分别用迭代和递归的方法对单链表进行逆转。听今天去华为参加机试的同学说,三道机试题目中也有一道同样的题目。由是自己动手写了写,代码如下:

            typedef struct LinkNode

            {

                     ElementType  data;

                     struct LinkNode *next;

             } node;

      代码1:迭代方法

    node* rLink(node *head)
    {
          if(head == NULL || head->next == NULL)
               return head;
          node *p1 = head;
          node *p2 = p1->next;
          node *p3 = p2->next;
          p1->next = NULL;
     
          while(p3 != NULL)
          {
               p2->next = p1;
               p1 = p2;
               p2 = p3;
               p3 = p3->next;
           }
           p2->next = p1;
           head = p2;

           return head;
    }

    代码2:递归方法

             

            p1 和p2指针分别指向当前递归子链表list1的第一个和第二结点。然后对以p2为首结点的子链表list2进行递归逆转;则p2节点将成为list2r逆转后的尾结点,而此时函数返回的头结点将是原list2的尾结点(如下图)。最后我们只要把p2的next指向p1就OK了。
                                                   

     

            node* recursive_Link(node* head)
            {
                  if(head == NULL || head->next == NULL)
                        return head;
                  node* p1 = head;
                  node* p2 = p1->next;  //p2其实记录的下一步递归过程后的尾结点
                  head = recursive_Link(p2);
                  p2->next = p1;
                  p1->next = NULL;

                   return head;
             }

  • 相关阅读:
    2013 年最不可思议的 10 个硬件开源项目
    三款SDR平台对比:HackRF,bladeRF和USRP
    形同虚设:花费700美元便可突破门禁
    oracle timestamp和date区别
    linux服务器性能——CPU、内存、流量、磁盘使用率的监控
    通过安装memadmin对memcache进行可视化管理
    SNMP MIBs and IPv6
    使用 cacti 监控 windows 服务器硬盘的 I/O 状况
    snmp对超过16T的磁盘大小识别不对的解决办法
    源码编译安装net-snmp
  • 原文地址:https://www.cnblogs.com/juandx/p/4067089.html
Copyright © 2011-2022 走看看