1、实验内容、过程及结果:一 问题描述脱氧核糖核酸(DNA)承载着生命的遗传代码,它是由4种核苷酸(又称为碱基)组成:腺嘌呤(A)、胸腺嘧啶(T)、鸟嘌呤(G)和胞嘧啶(C)。这4种碱基有无穷种组合,形成一条碱基单链,而DNA是由等长的两条相互缠绕的碱基单链所构成,在两条链上位置相同的碱基相互连接,称为碱基对。但是构成碱基对必须遵循一定的原则,其中A只能连接T,G只能和C连接,这称为WC兼容性。二 设计思路实行生物学上DNA的操作,要涉及到DNA的混合,溶合,匹配,输出。我们可以通过链表来形成一个DNA,利用DNA的碱基互补配对来完成相应的操作。三 解决问题 碱基的互补配对如下: 腺嘌呤(A)胸腺
2、嘧啶(T) 鸟嘌呤(G)和胞嘧啶(C) 1) 混合:互为WC补体的2条单链横向配对连接,形成一条完整的DNA双链。2) 溶合:一条DNA双链,通过加热使得碱基对断裂,形成2条DNA单链。3) 匹配:输入任何一条DNA单链,输出其匹配的WC补体单链。4) 输出:输出任何一条DNA单链或双链。四实现1 功能函数设计dna *chuangjian()此函数的作用是常见一个DNA单链,通过输入来确定DNA的长度与DNA的碱基void xianshia(dna *head)此函数的作用是用来显示DNA的第一条链void xianshib(dna *head)此函数的作用是用来显示DNA的另外一条链voi
3、d pd(dna *head)此函数的作用是用来通过碱基互补配对利用第一条链生成另外一条互补链void bijiao(dna *head,dna *bmax,int i)此函数的作用是用来比较两个DNA单链是否互补形成一个DNA单链void menu()此函数的作用是打印出用户操作菜单void main()此函数是该程序的主函数下面是源代码:#include stdlib.hmemory.h#includeconio.h#define max 200typedef struct DNA char a,b; int len; struct DNA*next;dna;dna *head;dna *
4、Lmax;dna *chuangjian()/初始化链表 dna *r,*t; int j,a; char i; r=head=(dna *)malloc(sizeof(dna); printf( 待创建DNA的长度:); scanf(%d,&a); for(j=1;ja=i; r-next=t; r=t; else printf(输入错误!n j-; head-len=a; r-next=NULL; return head;/chuangjianvoid xianshia(dna *head)/遍历链表 dna *p; p=head-next; while(p)%c ,p- p=p-/xia
5、nshi switch(p-a) case : p-b=; break; pd(head);b); int m; dna *p,*q; for(m=1;m if(head-len!=bm-len) continue; pd(bm); while(p) if(p-a=q-b) p=p- q=q- else break; if(!p) break; if(m=i)找到与之配对的单链!n配对后的DNA为: xianshia(head); for(int c=0;clen;c+)| xianshia(bm); else没有找到与之配对的单链!nnnn DNA的生物学操作nn 1. 混 合 n 2. 溶
6、 合 n 3. 匹 配 n 4. 输 出 n 0. 退 出 nnnn int i,n,m; while(1) system(cls menu(); 请输入您的选择: if(i=0) switch(i) case 1:请先输入要配对的DNA单链! chuangjian(); L0=head;要输入几条要进行配对的单链: scanf(m); for(n=1;n=m;n+) chuangjian(); Ln=head; printf( bijiao(L0,L,m); case 2:请先创建一个DNA! chuangjian();您创建的DNA为: xianshia(head); for(n=0; x
7、ianshib(head);加热成功.n加热后的第一条单链为:加热后的第二条单链为: case 3: 您输入的DNA单链为: 与之匹配的单链为: case 4: getch();五 运行与测试运行结果:算法分析:DNA的结构体中含有两条链上的碱基a,b 还有指向下一个碱基对的指针next,通过用户输入碱基a,通过函数pd生成与a互补的碱基b测试信息:通过用户输入选择1,2,3,4,0程序执行不同的操作,程序能正常运行。实验总结:通过编写生物DNA操作程序,让我们对链表问题有了更深层次的了解,同时在也知道了数据结构在实际当中的运用,在编写程序的过程中,我们组的各个组员也学会了团队编写程序,分工明确,相互配合。通过这次综合性试验,我们收获都非常大,提高了我们编写代码的能力,还有在程序出错时如何去解决。学 号 姓 名课题小组自评分数最后得分
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1