zoukankan      html  css  js  c++  java
  • 软件工程课堂测试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;    //输出最大值
    }

    三.结果截图

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

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

    五.附结对开发的工作照

  • 相关阅读:
    8 网站用户密码保存
    10 XSRF和XSS
    评分预测
    社会化推荐
    借助上下文信息
    UGC
    冷启动
    Git秘籍:在 Git 中进行版本回退
    Google在三大系统上停止对Chrome Apps的支持
    Windows 的 AD 域寄生于 Linux 机器
  • 原文地址:https://www.cnblogs.com/niujunyan/p/5387752.html
Copyright © 2011-2022 走看看