• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
秘银徽章
博客园    首页    新随笔    联系   管理    订阅  订阅
软件工程课堂测试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 }

三.结果截图

 

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

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

 

五.附结对开发的工作照

posted on 2016-04-13 11:19  秘银徽章  阅读(204)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3