2013级DS作业和实验参考答案总汇(1)(8)

2019-09-01 16:40

3->1->0 0->3 1->0 2->0 3->2

//9085ANSWER CODE1 #include using namespace std;

struct arcNode{int adjvex;arcNode *next;};

struct vertexNode{char vertex;arcNode *firstedge;}; void main()

{ int n,e,i,j,k,f=0;char vex[20];vertexNode adjlist[20];arcNode *s,*p; while(cin>>n>>e>>vex) { if(f)cout<>i>>j; s=new arcNode; s->adjvex=i; s->next=adjlist[j].firstedge; adjlist[j].firstedge=s; } for (i=0; i

}

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 第一次实验:顺序表9010,9005

9010:拆分顺序表 Problem Description

有一顺序表A,请将其拆分成两个顺序表B和C,使A中大于0的元素存放在B中,小于或等于0的元素存放在C中。

Input

有多组数据,每组第一行表示A表长n(0

将顺序表B和C的元素分两行输出,每行中相邻两元素之间用一个空格分隔,空表则不输出任何信息。 Sample Input 9

11 3 -3 3 -4 0 -2 6 32 Sample Output

11 3 3 6 32 -3 -4 0 -2

//9010ANSWER CODE1 #include using namespace std; int main() { int n,i,j,k,A[21],B[21],C[21]; while(cin>>n) { if(n>0 && n<=20) { for(i=0;i>A[i]; j=k=0; for(i=0;i0) B[j++]=A[i]; else C[k++]=A[i]; } if(j>0){ for(i=0;i0){ for(i=0;i

}

9005:最长相等子序列长度

Problem Description

给定一个有n个元素的整数数组b,b中连续的相等元素构成的子序列称为平台。设计一个算法求b中最长平台的长度。 Input

第一行为一个数字m,表示下面有m组数据,每组数据包括2行;每组数据中的第一行表示数组的长度n(不会超

过20,但可为空表),第二行表示数组的所有元素。 Output

输出最长平台的长度。 Sample Input 2 8

11 3 8 8 8 8 8 7 10

11 3 3 25 8 8 8 8 8 7 Sample Output

5 5

//9005ANSWER CODE1 #include using namespace std; int main() { int m,n,i,b[21],c,max; cin>>m; while(m--) { cin>>n; if(n<=0 || n>20) {cout<<\ for(i=0;i>b[i]; i=0;c=max=1; do{ while((b[i]==b[i+1])&&(imax) max=c; c=1; } while(i

第二次实验:顺序表2 9097

9097:杀猪!!

Problem Description

一户人家养了一群猪(n头,编号1,2,3....n),每头猪都有自己初始体重w(double)和体重增长率x。每天猪的体重都会

发生变化,是胖是瘦取决于体重增长率,体重增长率为负,变瘦,为正,变胖。(体重增长率:double,-0.2

输入数据有多组,每组数据第一行为猪的头数n(0

第二行为n头猪的体重

第三行为n头猪的体重增长率 Output

按先后被杀的顺序输出猪的编号。每组输出数据,输出一行,编号之间用逗号隔开 Sample Input 6

4 32 99 3 2 45

0.1 -0.15 0 -0.19 0.19 -0.04 Sample Output

3,6,2,1,5,4

//9097ANSWER CODE1 #include using namespace std; int main() {

int n,i,j,flag,maxi;double max;//max一定是double类型 while(cin>>n) { if(n<=50 && n>0) { double * pw=new double[n+1]; double * px=new double[n+1]; for(i=1;i<=n;i++)cin>>pw[i]; for(i=1;i<=n;i++)cin>>px[i]; flag=1; for(j=1;j<=n;j++) { max=0;maxi=0;

for(i=1;i<=n;i++){if(pw[i]>max){max=pw[i];maxi=i;}} if(flag==1){cout<

return 0;

}

第三次实验:单链表9007

9007:单链表按值操作

Problem Description

对值递增有序的单链表进行以下操作:若表中存在值为x的结点,则将它从表中删除;否则,就往表中插入一个值为x的结点,并保持表值递增有序的性质不变(假设表中没有值相同的元素)。处理后若为空表则不输出。

Input

每组数据包括3行,第一行表示单链表的长度n(不会超过50);第二行表示单链表的所有元素;第三行表示x值。 Output

输出执行操作后的单链表,元素之间用一个空格分隔。 Sample Input 5

1 3 5 7 9 3 5

1 3 5 7 9 4

Sample Output

1 5 7 9 1 3 4 5 7 9

//9007ANSWER CODE1 #include using namespace std;

struct Node{ int data; Node * next;}; int main(){ int i,n,x,A[51]; Node *p,*first,*q,*r,*s; while(cin>>n){ if(n==0){ cin>>x; cout<next=NULL; s=new Node; s->data=x; s->next=first->next; first->next=s; } else if(n>=1 && n<=50){ for(i=0;i>A[i];} cin>>x; //尾插法creaLinkList first=new Node; first->next=NULL; r=first; for(i=0;idata=A[i]; s->next=r->next; r->next=s; r=s; } //按值查找 p=first->next;q=first; while(p){ if(p->data==x){ q->next=p->next; delete p; break; } else if(p->datanext;}


2013级DS作业和实验参考答案总汇(1)(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:南京工业大学2010-2011学年第二学期《高等数学》试卷和参考答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: