zoukankan      html  css  js  c++  java
  • 软件工程课堂测试07(结对开发)

    软件工程课堂测试07(结对开发)

    一.设计思路

    1.初始化一个单链表,用来储存输入的数字

    2.输入数字n,控制链表长度

    3.后插法,初始化一个n个结点的循环链表

    4.输入n个正负整数,赋值给单链表的数字域,连接单链表成循环链表

    5.定义3个变量,用2个for循环来找元素组合成连续子数组之和最大得值

    6.第一个for循环实现从第一个数字起到最后一个数字起形成的n个元素组合成连续子数组之和最大得值

    7.第二个for循环实现从第i个数字起找n个元素组合成连续子数组之和最大得值

    8.输出元素组合成连续子数组之和最大得值

    二.源程序代码

     1 //输入数字串形成一个环,找出子数组的和的最大值   谷伟华、牛俊燕    2016.4.13
     2 #include<iostream>
     3 using namespace std;
     4 typedef struct LNode
     5 {
     6     int num;   //数字域
     7     struct LNode *next;   //指针域
     8 }LNode,*LinkList;
     9 void CreateList_H(LinkList &L,int n) //后插法,初始化一个n个节点的循环链表
    10 { //正位序输入n个元素的值,建立带表头结点的单链表L
    11     L=new LNode;
    12     L->next=NULL;  //先建立一个带头结点的空链表
    13     LinkList r,p;
    14     r=L;            //尾指针r指向头结点
    15     for(int i=0;i<n;i++)
    16     {
    17         p=new LNode;  //生成新的结点
    18         cout<<"请输入第"<<i+1<<"个数字:"<<endl;
    19         cin>>p->num;   //输入元素值赋给新结点*p的数字
    20         p->next=NULL; r->next=p; //将新结点*p插入到尾结点*r之后
    21         r=p;           //r指向新的尾结点*p
    22     }
    23     r->next=L->next;  //指针r指向头结点,形成循环单链表
    24 }
    25 void main()
    26 {
    27     LinkList L;
    28     int n;
    29     cout<<"请输入数字的个数:";
    30     cin>>n;
    31     CreateList_H(L,n);  //调用函数,创建列表
    32     int i,j,bj,max,Max;
    33     LNode *q;  //建立新的指针*q,让它在循环单列表上进行移动
    34     q=L;
    35     Max=q->next->num;    //Max初始化初始化为第1个数字的值
    36     for(i=0;i<n;i++)  //循环n次,
    37     {
    38         bj=q->next->num;    //bj初始化为第i个数字的值
    39         max=q->next->num;   //max初始化为第i个数字的值
    40         for(j=i+1;j<i+n-1;j++)  //从j=i+1开始循环n-1次
    41         {
    42             if(bj>0)
    43             { //如果前j-1个数字的子数组的和的最大值>0,那么max=bj+第j个数字
    44                 max=bj+q->next->next->num;
    45             }
    46             else
    47             { //否则max=第j个数字
    48                 max=q->next->next->num;
    49             }
    50             q->next=q->next->next;   //q指针向后移动
    51             bj=max;   //将max赋给bj
    52         }
    53         if(Max<max)
    54         {   //每一轮的max和Max比较取最大值
    55             Max=max;
    56         }
    57         q->next=q->next->next;   //q指针向后移动
    58     }
    59     cout<<"子数组的最大值是:"<<Max<<endl;    //输出最大值
    60 }

    三.结果截图

    四.两人合作中的过程、体会以及如何解决冲突

    上一次的四则运算的几次迭代作业都是我的搭档写的,我寻思这次作业简单,就让我负责程序分析,代码编程,她负责代码复审和代码测试计划,但是当我把我的代码给她之后,她觉得应该用数据结构中循环链表来解决这个问题,于是我们又展开了一番讨论,最终决定用循环链表来解决,这次的作业让我有一个深刻的体会,当拿到一个题目时,和搭档讨论完之后,不论谁是负责程序分析,代码编程的,谁是负责代码复审和代码测试计划的,我们都应该动手自己做一做,即使思路一样,但是做法还是会有不同,做完之后要相互交流,以达到共同进步的目的。

    五.附结对开发的工作照

  • 相关阅读:
    视频:JDBCRDD源码及自定义JDBCRDD的分区策略
    聊聊spark-submit的几个有用选项
    线性求第k大
    汇编基础 第一章_总线
    长度不超过n的连续最大和___优先队列
    ISAP
    次小生成树
    k短路
    求出欧拉回路,欧拉路径
    拓扑排序bfs_dfs
  • 原文地址:https://www.cnblogs.com/gzgz/p/5386383.html
Copyright © 2011-2022 走看看