您的位置:首页 > 其它

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

2016-04-13 11:19 281 查看

软件工程课堂测试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 }


三.结果截图













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

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

五.附结对开发的工作照

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: