zoukankan      html  css  js  c++  java
  • 链表相关题目总结


    一、两数相加:

      

      由于是刷的第一题,先写下:

      本题是两个链表相加,方法是生成一个新的链表(其实是一个节点不断指向下一个节点,这样依次连起来的)去存储这个两个的和。

      首先生成一个新的链表h,h是头指针;然后再让指针t指向h。

        新建私有方法,该方法的作用是返回链表的有效数据,并让链表指向后继节点。即p好p->next指向相同的地址。

      然后建立一个进位标志carry,让sum = x + y  + carry:,将sum %10作为新节点node的初始值。让node和*t指向相同的地址,记住*t是t解引用,t指向的值是h,所以就是h和node指向相同的地址。

           然后让t指向node->next的地址。

      

     1 class Solution {
     2     
     3 public:
     4     ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) {
     5         ListNode* h = NULL,**t = &h; //t指向h,h指向NULL
     6         int x = 0,y = 0,carry = 0,sum = 0;
     7         while(l1 != NULL || l2 != NULL){
     8             x = getValueAndMoveNext(l1);
     9             y = getValueAndMoveNext(l2);
    10             sum = x + y + carry;
    11             ListNode* node = new ListNode(sum%10);
    12             *t = node; //h和node指向同一个地址
    13             t = &node->next; //node->next是一个指针,它取指针的地址给t
    14             carry = sum /10;
    15         }
    16         if(carry > 0){
    17             ListNode* node = new ListNode(carry % 10);
    18             *t = node;
    19         }
    20         return h;
    21     }
    22 private:
    23     int getValueAndMoveNext(ListNode* &l){ //l是一个ListNOde指针的引用
    24         int v = 0;
    25         if(l != NULL){
    26         v = l->val;
    27         l = l->next;
    28         }
    29 
    30         return v;
    31     }
    32 
    33 };

      

    陈小洁的三只猫
  • 相关阅读:
    笔试题 输出金字塔 面试经典
    C++ 函数, 虚函数, 纯虚函数
    EJB 根据beanName引用EJB
    【J2EE性能分析篇】JVM参数对J2EE性能优化的影响【转】
    C++ 引用和指针作为函数参数的例子。请不要拍砖
    lucene 总结
    二维数组按列序号排序 面试经典
    http://www.linuxidc.com/Linux/201004/25494.htm
    银行取款费用
    PHP 生成 csv 文件时乱码解决
  • 原文地址:https://www.cnblogs.com/ccpang/p/11428380.html
Copyright © 2011-2022 走看看