• 考研王道强化阶段(二轮复习)“算法题”备考打卡表 记录


    问题:做408真题_2010_42题,即王道书 2.2.3_大题_10

    在这里插入图片描述

    思路:

    回头补


    代码:

    int moveL(SqlList &L,SqlList &S,int p)
    {
       
       //  健壮性表达
       if( L.len ==0 )
       {
          return 0;
       }
       // 调用另外一个顺序表存储pos前面的元素
       for( int i=0;i<p;i++)
       {
          S.data[i]=L.data[i];
       }
       // 准确来说是将整个重新遍历 在一个for循环下完成两次调整
       // 将pos后面的元素向前面移动 L.len-pos
       for( int j=0;j<L.len;j++)
       {
          if( j<L.len-p)
          {
             L.data[j] =L.data[j+p];    
          }
          // 这部分完成将另外一个顺序表的元素带过来
          else
          {
             L.data[j] =S.data[pos+j-L.len];
          }
       }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    问题: 做408真题_2011_42题,即王道书 2.2.3_大题_11

    不确定答案 后续会跟进吧

    已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数。有序序列A​0​​ ,A​1​​ ,⋯,A​N−1​的中位数指A​(N−1)/2​​ 的值,即第⌊(N+1)/2⌋个数(A0​​ 为第1个数)。
    输入格式:
    输入分三行。第一行给出序列的公共长度N(0降序排列的整数。数字用空格间隔。
    输出格式:
    在一行中输出两个输入序列的并集序列的中位数。

    思路

    先合并两个表再找中间值

    代码

    int midGet(SqlList S1,SqlList S2,SqlList a)
    //a 为辅助顺序表
    {
        for(int i=0;i<S1.len&& i<S2.len;i++)
        {
            if(S1.data[i]<S2.data[i])
            {
                a.data[i]=S1.data[i];
            }
            else {
                a.data[i] = S2.data[i];
            }
        }
        int half =a.len/2;
        printf("",a.data[half]);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    链表部分

    问题:408真题_2009_42题,即王道书 2.3.7_大题_22

    在这里插入图片描述

    简述就是 求链表的倒数第k个位置的值

    思路 就是 设用两个指针 保持恒定k个距离 从前往后移动 结束之后就是找到了位置

    #include
    #define maxsize 50
    typedef int elemtype;
    // 设立一个链表  和一个K的位置  设立两个节点指针  初始化都为 头结点
    //  之间的距离 为k 这样当  p在前  q在后 这样 当p到末尾了之后   q的位置就是 要找到的链表倒数第k的位置值
    typedef struct  LNode{
        elemtype  data;
        struct LNode*next;
    }LNode,*linklist;
    // a b c d 
    int findk(linklist L,int k)
    {
        // 声明两个指针  都指向链表的第一个结点
        LNode *p,*q=L->next;
        int count=0;
        while(p!=NULL)
        {
            if(count<k)
            {
                count++;
            }
            // 在这里 count 已经等于k了剩下的 p继续移动  中间的距离恒等
            else
            {
               q=q->next; 
            }
             p=p->next;
             
        }
        // while循环结束   
        if(count<k)
        {
            return;
        }
        else
        {
            return q->data;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
  • 相关阅读:
    ssh宿舍管理系统
    K8s自我探索实践心得
    安装Photon虚拟机
    java-php-python-ssm新冠病毒感染者档案信息管理系统计算机毕业设计
    「容器管理系统」 3. 初始化配置和日志监控
    Gazebo导入Solidworks自定义的三维模型(单零件)
    聚观早报|蚂蚁集团发布“蚁天鉴”;vivo X100系列即将亮相
    深度学习(18):nerf、nerf-pytorch代码运行与学习
    Spring Boot+Vue3前后端分离实战wiki知识库系统之用户管理&单点登录
    2024年G2电站锅炉司炉证考试题库及G2电站锅炉司炉试题解析
  • 原文地址:https://blog.csdn.net/qq_34589842/article/details/133418106