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 }

    三.结果截图

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

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

    五.附结对开发的工作照

  • 相关阅读:
    在TreeView控件节点中显示图片
    PAT 甲级 1146 Topological Order (25 分)
    PAT 甲级 1146 Topological Order (25 分)
    PAT 甲级 1145 Hashing
    PAT 甲级 1145 Hashing
    PAT 甲级 1144 The Missing Number (20 分)
    PAT 甲级 1144 The Missing Number (20 分)
    PAT 甲级 1151 LCA in a Binary Tree (30 分)
    PAT 甲级 1151 LCA in a Binary Tree (30 分)
    PAT 甲级 1149 Dangerous Goods Packaging
  • 原文地址:https://www.cnblogs.com/gzgz/p/5386383.html
Copyright © 2011-2022 走看看