• 单链表实现大数相加


    字节跳动面试题:

    两个数为正数。

    用链表求和:

    现场写的时候出了几个bug实在尴尬。。。

    样例一

    2 3 4 5
    4 5 6
    2 8 0 1

    样例二

    9 9 9
    9 9 9
    1 9 9 9

      1 #include <iostream>
      2 using namespace std;
      3 
      4 struct List{
      5     int val;
      6     List * next;
      7 };
      8 
      9 List* insert(List *node, int val){
     10     List *root = node;
     11     if(node == NULL){
     12         // cout << "!!" << endl;
     13         node = new List();
     14         root = node;
     15         node->val = val;
     16         node->next = NULL;
     17     }else{
     18         while(node->next != NULL){
     19             node = node->next;
     20         }
     21         List * an = new List();
     22         an->val = val;
     23         an->next = node->next;
     24         node->next = an;
     25     }
     26     return root;
     27 }
     28 
     29 void print(List *an){
     30     while(an != NULL){
     31         cout << an->val<<" ";
     32         an = an->next;
     33     }
     34     cout << endl;
     35 }
     36 
     37 
     38 List * become(List *node){
     39     if(node == NULL) return NULL;
     40     List *pnext = NULL;
     41     List *parent = NULL;
     42     while(node != NULL){
     43         pnext = node->next;
     44         node->next = parent;
     45         parent = node;
     46         node = pnext;
     47     }
     48     return parent;
     49 }
     50 
     51 List * getsum(List *a, List *b){
     52     List *an = become(a);
     53     List *bn = become(b);
     54     List *cn = new List();
     55     int flag = 0;
     56     while(an != NULL && bn!=NULL){
     57         List *cnt = new List();
     58         cnt->val= (an->val + bn->val + flag)%10;
     59         if((an->val + bn->val + flag)>=10)
     60             flag = 1;
     61         else
     62             flag = 0;
     63         cnt->next = cn->next;
     64         cn->next = cnt;
     65         an = an->next;
     66         bn = bn->next;
     67     }
     68     while(an != NULL){
     69         List *cnt = new List();
     70         if((an->val + flag)>=10)
     71             flag = 1;
     72         else
     73             flag = 0;
     74         cnt->val= (an->val + flag)%10;
     75         cnt->next = cn->next;
     76         cn->next = cnt;
     77         an = an->next;
     78     }
     79     while(bn != NULL){
     80         List *cnt = new List();
     81         if((bn->val + flag)>=10)
     82             flag = 1;
     83         else
     84             flag = 0;
     85         cnt->val= (bn->val + flag)%10;
     86         cnt->next = cn->next;
     87         cn->next = cnt;
     88         bn = bn->next;
     89     }
     90     if(flag == 1){
     91         List *cnt = new List();
     92         cnt->val= 1;
     93         cnt->next = cn->next;
     94         cn->next = cnt;
     95     }
     96     return cn->next;
     97 }
     98 
     99 
    100 int main() {
    101     string s;
    102     getline(cin, s);
    103     List *a = NULL, *b = NULL;
    104     int cnt = 0;
    105     s += ' ';
    106     for(int i = 0; i < s.length(); i++){
    107         if(isdigit(s[i])){
    108             cnt = cnt*10 + s[i]-'0';
    109         }else{
    110             a = insert(a, cnt);
    111             cnt = 0;
    112         }
    113     }
    114     getline(cin, s);
    115     cnt = 0;
    116     s += ' ';
    117     for(int i = 0; i < s.length(); i++){
    118         if(isdigit(s[i])){
    119             cnt = cnt*10 + s[i]-'0';
    120         }else{
    121             b= insert(b, cnt);
    122             cnt = 0;
    123         }
    124     }
    125     List * node = getsum(a,b);
    126     print(node);
    127     return 0;
    128 }
  • 相关阅读:
    unp.h
    美拍视频下载
    动态加载ajax 腾讯视频评论
    已知二叉树的先序,中序遍历,求后续遍历

    JSP九大内置对象及四个作用域
    转换数据库连接池为hikaricp
    JSP Tomcat8.0运行连接池时发生异常【AbstractMethodError oracle.jdbc.driver.T4CConnection.isValid(I)Z】
    tomcat启动时出现There are no resources that can be added or removed from the server
    java.lang.ClassNotFoundException:org.springframework.web.context.ContextLoaderListener问题解决
  • 原文地址:https://www.cnblogs.com/zllwxm123/p/11488429.html
Copyright © 2020-2023  润新知