ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:19.13KB ,
资源ID:11517506      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11517506.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言上机报告链表顺序表堆栈队列二叉树以及几种常见排序算法.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言上机报告链表顺序表堆栈队列二叉树以及几种常见排序算法.docx

1、C语言上机报告链表顺序表堆栈队列二叉树以及几种常见排序算法上机报告上机实验一:顺序表相关操作。程序:#includetypedef struct list_type int data20; int num;list;void insertl(list *l,int i,int x) int j; for(j=l-num-1;j=i-1;j-) l-dataj+1=l-dataj; l-datai=x; l-num+; for(j=0;jnum;j+) printf(%d,l-dataj); printf(n); void delate(list*L,int k) int i; if(kL-nu

2、m-1)printf(Error!n); for(i=k+1;inum;i+) L-datai-1=L-datai; L-num-; for(i=0;inum;i+) printf(%d ,L-datai); printf(n); void delte_negative(list*L) int i,j; int n; for(i=0;inum-1;i+) if(L-datainum; j=i; while(i!=n) L-dataj=L-dataj+1; j+; n-; i-; L-num-; for(i=0;inum;i+) printf(%d ,L-datai); printf(n);vo

3、id main() list a; int i,n,k,c; for(i=0;inum区别,以及何时用 a.num何时用 a-num。解决方法:问同学。实验输出:1:96 32 -5 -6 23 52 36 78 65; 2:96 32 -5 -6 23 36 78 65; 3:96 32 23 36 78 65;上机实验二:链表的相关操作:程序:#include#includetypedef struct node_type int number; struct node_type *next;node_type;typedef struct list_type node_type *hea

4、d; node_type *tail; int length;list_type;void create_list(list_type *p) printf(请创建一个链表:n); node_type *p1,*p2; p-length=0; p1=(node_type *)malloc(sizeof(node_type); printf(请输入第1个元素:n); scanf(%d,&p1-number); while(p1-number!=0) p-length+; if(p-length=1) p-head=p1; else p2-next=p1; p-tail=p1; p2=p1; p1

5、=(node_type *)malloc(sizeof(node_type); printf(请输入第%d个元素:n,p-length+1); scanf(%d,&p1-number); void insert_list(list_type *p,int insert_location,node_type *insert_node) node_type *p1; p1=p-head; int i; if(insert_location=1) insert_node-next=p1; p-head=insert_node; else if(insert_location=p-length+1)

6、p-tail-next=insert_node; p-tail=insert_node; else for(i=1;inext; insert_node-next=p1-next; p1-next=insert_node; p-length+;void delete_list(list_type *p,int delete_location) node_type *p1; p1=p-head; int i; if(delete_location=1) p-head=p1-next; else for(i=1;inext; p1-next=p1-next-next; p-length-;void

7、 output_list(list_type *p) printf(输出链表:n); node_type *p1; p1=p-head; int i; for(i=1;ilength;i+) printf(第%d个元素:n,i); printf(%dn,p1-number); p1=p1-next; void main() list_type l; create_list(&l); node_type insert_node; printf(请输入要插入的元素:n); scanf(%d,&insert_node.number); int insert_location; printf(请输入要

8、插入的位置:n); scanf(%d,&insert_location); while(insert_locationl.length+1) printf(输入出错,请重新输入:n); scanf(%d,&insert_location); insert_list(&l,insert_location,&insert_node); printf(%dn,l.length); output_list(&l); int delete_location; printf(请输入要删除的位置:n); scanf(%d,&delete_location); while(delete_locationl.l

9、ength); printf(输入出错,请重新输入:n); scanf(%d,&delete_location); delete_list(&l,delete_location); output_list(&l);典型测试数据(输入):数据:96 32 -5 -6 52 ;插入位置:2;插入数:23;删除位置:4;查询数:23;应输出:1:96 32 -5 -6 52 ;2:96 23 32 -5 -6 52; 3:96 23 32 -6 52; 4:96 32 -6 52;上机时遇到的问题:对链表的用法不清楚。解决方法:问同学。实验输出:1:96 32 -5 -6 52 ;2:96 23 3

10、2 -5 -6 52; 3:96 23 32 -6 52; 4:96 32 -6 52;上机实验三:栈的相关操作:程序:#includetypedef struct stack_type int stack20; int top;stacktype;int pushs(stacktype *s) int i=0,x; while(1) scanf(%d,&x); if(!x) break; else s-stacks-top=x; s-top+; i+; return(i);int pop(stacktype *s) s-top-; return(s-stacks-top+1);void pu

11、t(stacktype *s) int n,i=0; n=s-top; while(n0) printf(%dn,s-stacki); n-; i+; void main() stacktype s; int k; s.top=0; k=pushs(&s); printf(输出进栈元素); put(&s); pop(&s); pop(&s); printf(输出调用两次出栈函数之后的元素); put(&s);典型测试数据(输入):数据:3 6 9 8 5 0 ;应输出:1:3 6 9 8 5 0 ;2:3 6 9 ; 上机时遇到的问题:没有给栈顶初值,导致实验结果一直不正确。解决方法:问同学。

12、实验输出:1:3 6 9 8 5 0 ;2:3 6 9 ; 上机实验四:队列的相关操作:程序:#include#define m 100typedef struct qeue_type int qem+1; int front; int rear; int n;qeuetype;int enter(qeuetype *q,int x) if(q-rear)+1)%m=q-front) return 0; else q-qeq-rear=x; q-rear=(q-rear+1)%m; return 1; int el(qeuetype *q) if(q-rear=q-front) return

13、0; else q-front=(q-front+1)%m; return(q-qeq-front); void aa(qeuetype *q) int l; l=q-n; while(l0) if(q-qeq-front0) enter( q, q-qeq-front); else (q-n)-; el(q); l-; void push(qeuetype *a) while(1) if(a-n0) printf(%dn,a-qea-front); a-front=a-front+1; (a-n)-; else break; void main() qeuetype a; a.front=0

14、; a.rear=0; int i; int s10=2, 3, -4, 6, -5, 8, -9, 7, -10, 20; a.n=10; for(i=0;i10;i+) enter( &a,si); printf(调用aa函数之前n); push(&a); a.front=0; a.n=10; aa(&a); printf(调用aa函数之后n); push(&a);应输出:1:2 3 -4 6 -5 8 -9 7 -10 20;2:2 3 6 8 7 20; 上机时遇到的问题:无。实验输出:1:2 3 -4 6 -5 8 -9 7 -10 20;2:2 3 6 8 7 20;上机实验五:二

15、叉树相关操作:程序: #include#includetypedef struct btree int data; struct btree *l; struct btree *r;bnode;void creat(bnode *s) bnode *p,*q; int k; int i,n; *s=NULL; printf(input n:); scanf(%d,&n); for(i=0;il=NULL; p-r=NULL; printf(input k:); scanf(%d,&k); p-data=k; if(*s=NULL) *s=p; else q=*s; while(q!=NULL)

16、 if(q-datak) if(q-l!=NULL) q=q-l; else q-l=p; q=NULL; else if(q-r!=NULL) q=q-r; else q-r=p; q=NULL; void xianxun(bnode *bt) if(bt=NULL) printf(error); else printf(%dn,bt-data); if(bt-l!=NULL) xianxun(bt-l); if(bt-r!=NULL) xianxun(bt-r); void zhongxun(bnode *bt) if(bt=NULL) printf(error); else if(bt-

17、l!=NULL) zhongxun(bt-l); printf(%dn,bt-data); if(bt-r!=NULL) zhongxun(bt-r); void houxun(bnode *bt) if(bt=NULL) printf(error); else if(bt-r!=NULL) houxun(bt-r); if(bt-l!=NULL) houxun(bt-l); printf(%dn,bt-data); void main() bnode *st; creat(&st); printf(xianxunbianlijieguon); xianxun(st); printf(zhon

18、gxunbianlijieguon); zhongxun(st); printf(houxunbianlijieguon); houxun(st);典型测试数据(输入):数据:n=6;数值:56 98 75 35 21 63;应输出:先序遍历结果:56 35 21 98 75 63; 中序遍历结果:21 35 56 63 75 98; 后序遍历结果:63 75 98 21 35 56;上机时遇到的问题:无; 实验输出:先序遍历结果:56 35 21 98 75 63; 中序遍历结果:21 35 56 63 75 98; 后序遍历结果:63 75 98 21 35 56;上机实验六:查找相关操作

19、:程序:#include#define m 8int shunxun(int *a,int k) int i; for(i=0;im;i+) if(ai=k) return i+1; break; printf(cant find the wordn); return -1;int erfen(int *a,int k) int low,high; int mid; low=0; high=m-1; while(low=high) mid=(low+high)/2; if(amid=k) return mid+1; else if(amidk) low=mid+1; else high=hig

20、h-1; printf(cant find the wordn); return -1;void main() int k; int am=3,10,13,17,40,43,50,70; int s; scanf(%d,&k); printf(顺序查找结果n); s=shunxun(a, k); printf(%dn,s); printf(二分查找查找结果n); s=erfen(a,k); printf(%dn,s); 实验数据:预计结果:第一次输入:43输出结果:6;第二次输入:5;输出结果:cant find the word -1;上机时遇到的问题:对二分查找不是很熟悉;解决办法:查书;

21、实验输出:第一次输入:43输出结果:6;第二次输入:5;输出结果:cant find the word -1;上机实验七:排序相关算法;程序:#include#define n 10void push(int *a) int i; for(i=0;in;i+) printf(%4d,ai); void xuanze(int *a) int i,j,p,temp; for(i=0;in-1;i+) p=i; for(j=i+1;jn;j+) if(apaj) p=j; if(p!=i) temp=ap; ap=ai; ai=temp; push(a); printf(n);void maopao

22、(int *a) int i,j,temp; for(i=0;in-1;i+) for(j=0;jaj) temp=aj; aj=aj+1; aj+1=temp; push(a); printf(n); void insertSort(int *a) int temp; for (int i=1; in;i+) for (int j = 0; j ai) temp=aj; aj=ai; ai=temp; push(a); printf(n); void main() int an=513,87,512,61,908,170,897,275,653,462; int bn=513,87,512,

23、61,908,170,897,275,653,462; int cn=513,87,512,61,908,170,897,275,653,462; xuanze(a); maopao(b); insertSort(c); 预计输出结果:选择排序输出结果:908 897 653 513 512 462 275 170 87 61;冒泡排序输出结果:908 897 653 513 512 462 275 170 87 61;直接插入排序输出结果:61 87 170 275 462 512 513 653 897 908;上机时遇到的问题:对直接排序不够了解;解决办法:上网查资料:实验输出结果:选择排序输出结果:908 897 653 513 512 462 275 170 87 61;冒泡排序输出结果:908 897 653 513 512 462 275 170 87 61;直接插入排序输出结果:61 87 170 275 462 512

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1