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

一.设计思路

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

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

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

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

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

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

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

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

二.源程序代码

//输入数字串形成一个环,找出子数组的和的最大值   谷伟华、牛俊燕    2016.4.13
#include<iostream>
using namespace std;
typedef struct LNode
{
    int num;   //数字域
    struct LNode *next;   //指针域
}LNode,*LinkList;
void CreateList_H(LinkList &L,int n) //后插法,初始化一个n个结点的循环链表
{ //正位序输入n个元素的值,建立带表头结点的单链表
    L=new LNode;
    L->next=NULL;  //先建立一个带头结点的空链表
    LinkList r,p;
    r=L;            //尾指针指向头结点
    for(int i=0;i<n;i++)
    {
        p=new LNode;  //生成新的结点
        cout<<"请输入第"<<i+1<<"个数字:"<<endl;
        cin>>p->num;   //输入元素值赋给新结点*p的数字
        p->next=NULL; r->next=p; //将新结点*p插入到尾结点*r之后
        r=p;           //r指向新的尾结点*p
    }
    r->next=L->next;  //指针r指向头结点,形成循环单链表
}
void main()
{
    LinkList L;
    int n;
    cout<<"请输入数字的个数:";
    cin>>n;
    CreateList_H(L,n);  //调用函数,创建列表
    int i,j,bj,max,Max;
    LNode *q;  //建立新的指针*q,让它在循环单Ì列表上进行移动
    q=L;
    Max=q->next->num;    //Max初始化初始化为第1个数字的值
    for(i=0;i<n;i++)  //循环次
    {
        bj=q->next->num;    //bj初始化为第i个数字的值
        max=q->next->num;   //max初始化为第i个数字的值
        for(j=i+1;j<i+n-1;j++)  //从j=i+1开始循环n-1次
        {
            if(bj>0)
            { //如果前j-1个数字的子数组的和的最大值>0,那么,max=bj+第j个数字
                max=bj+q->next->next->num;
            }
            else
            { //否则,max=第j个数字
                max=q->next->next->num;
            }
            q->next=q->next->next;   //q指针向后移动
            bj=max;   //将max赋给bj
        }
        if(Max<max)
        {   //每一轮的max和Max比较,取最大值
            Max=max;
        }
        q->next=q->next->next;   //q指针向后移动
    }
    cout<<"子数组的最大值是:"<<Max<<endl;    //输出最大值
}

三.结果截图

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

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

五.附结对开发的工作照

原文地址:https://www.cnblogs.com/niujunyan/p/5387752.html