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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(计算机软件技术基础实验报告.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

计算机软件技术基础实验报告.docx

1、计算机软件技术基础实验报告实验一 线性表的基本操作 一、实验目的与基本要求1掌握数据结构中的一些基本概念。数据、数据项、数据元素、数据类型和数据结构,以及它们之间的关系。2 了解数据的逻辑结构和数据的存储结构之间的区别与联系;数据的运算与数据的逻辑结构的关系。3 掌握线性表的基本操作:插入、删除、查找以及线性表的合并等运算。4 掌握运用C语言上机调试线性表的基本方法。二、实验条件1 硬件:一台微机2 软件:操作系统和C语言系统三、实验方法确定存储结构后,上机调试实现线性表的基本运算。四、实验内容1 试编写在无头结点的单链表上实现线性表基本运算LOCATE(L,X),INSERT(L,X,1)和

2、DELETE(L,1)的算法。2 假设有两个按数据元素值递增有序排列的线性表A和B,均以单链表作为存储结构。编写算法将A表和B表归并成一个按元素值递减有序(即非递增有序,允许值相同)排列的线性表C,并要求利用原表(即A表和B表)结点空间存放表C。3 将一个线性表中的值就地逆置。4 在线性表的顺序存储结构的第一个位置上插入一个元素。(注意区分链表和顺序表)实验代码:#includestdlib.h#includestdio.hstruct node /定义结构体int d;struct node *next;struct node *head1,*head2,*p,*q;void pre(str

3、uct node *head) /打印数据 printf(链表中的数据为:n);p=head;while(p!=NULL)printf(%5d,p-d);q=p;p=p-next;printf(n);struct node *creat() /建立链表struct node *head; int x;printf(输入你要储存的数据:n);head=NULL;q=NULL;scanf(%d,&x);while(x0)p=(struct node *)malloc(sizeof(struct node);p-d=x;p-next=NULL;if(head=NULL) head=p;else q-

4、next=p;q=p;scanf(%d,&x);getchar();pre(head);return (head);void locate(struct node *head,int x) /查找链表中的数据 int u=1;p=head;while (p-next!= NULL) if (p-d=x) break; else p=p-next;u+; if(p-d!= x)printf(无此结点);printf(在链表中的位置为:);printf(%d,u);void insert(struct node *head,int x, int i) /插入数据 p = head;int j=1;

5、 q=(struct node *)malloc(sizeof(struct node); q-d=x;if(i=1) q-next=head; head=q;elsewhile(jnext !=NULL)j+;p=p-next;q-next=p-next;p-next=q;void delet(struct node *head,int i) /删除数据 p=head;int j=1;if(inext; free(q);elsewhile(jnext != NULL) p=p-next;j+;q=p-next; p-next=q-next; free(q);void hebing(struc

6、t node *x,struct node *y) /合并两个链表p=x;q=y;while(p-next!=NULL)p=p-next;p-next=q;pre(x);void paixu(struct node *head) /对链表中的数据进行排序int m,n,i=1,t;p=head;while(p-next!=NULL)p=p-next;i+;p=head;for(n=i;n1;n-)p=head;for(m=1;mnext;if(p-dd)t=p-d;p-d=q-d;q-d=t;p=p-next; void caozuo(struct node *head) /操作界面 int

7、m,n;char t;printf(输入你要的操作:,查找 2,插入 3,删除n);scanf(%c,&t);switch(t)case 1: printf(输入你要查找的元素的值:n); scanf(%d,&m); locate(head,m);break;case 2: printf(输入你要插入的元素的值和位置:n); scanf(%d,&m); scanf(%d,&n); insert(head,m,n);pre(head);break;case 3: printf(输入你要删除的元素的位置:n); scanf(%d,&m); delet(head,m);pre(head);break

8、;default:printf(errorn);void main() /主函数 char frag=y,n=NULL; printf(输入你要建立的第A链表中的元素:n);head1=creat();printf(输入你要建立的第B链表中的元素:n);head2=creat();doprintf(选择你要操作的链表A/B或者合并排序操作C:n); /选择操作scanf(%c,&n);getchar();switch(n) case A: caozuo(head1);break;case B: caozuo(head2);break;case C: hebing(head1,head2);pa

9、ixu(head1);pre(head1);break;default:printf(errorn);printf(n是否继续y/n:n); scanf(%c,&frag); getchar();while(frag=y);实验2 栈和队列的基本操作一、实验目的与基本要求1掌握栈和队列的顺序存储和链式存储结构2 掌握栈和队列的特点。3 掌握栈和队列的基本运算。二、实验条件1硬件:一台微型计算机2软件:操作系统和C语言系统。三、实验方法确定存储结构后,上机调试实现栈和队列的基本运算。四、实验内容1 写出栈的入栈和出栈的算法2 写出队列的入队和出队算法。实验代码:#includestdlib.h#

10、includestdio.hstruct nodeint d;struct node *next;int num;struct node *head;void pre() struct node *p; printf(链表中的数据为:n);p=head;while(p!=NULL)printf(%5d,p-d);p=p-next;printf(n);void creat() struct node *p,*q; int x;printf(输入你要储存的数据,输入负数作为结束:n);head=NULL;q=NULL;scanf(%d,&x);while(x0) num+;p=(struct no

11、de *)malloc(sizeof(struct node);p-d=x;p-next=NULL;if(head=NULL) head=p;else q-next=p;q=p;scanf(%d,&x);getchar();pre();void insert(int x, int i) struct node *p,*q; p = head;int j=1; q=(struct node *)malloc(sizeof(struct node); q-d=x;if(i=1) q-next=head; head=q;elsewhile(jnext !=NULL)j+;p=p-next;q-nex

12、t=p-next;p-next=q;void delet(int i) struct node *p,*q; p=head;int j=1;if(inext; free(q);elsewhile(jnext != NULL) p=p-next;j+;q=p-next; p-next=q-next; free(q);void push() int n;num+;printf(请输入数据:);scanf(%d,&n);getchar();insert(n,num);pre(); void pop() delet(num); num-; pre();void rudui() int n;num+;p

13、rintf(请输入数据:);scanf(%d,&n);getchar();insert(n,1);pre();void chudui() delet(num); num-; pre();void main() char frag=y;int n; creat();doprintf(选择你要的操作入栈出栈入队出队:n);scanf(%d,&n);getchar();switch(n)case 1: printf(入栈操作); push();printf(n);break;case 2: printf(出栈操作); pop();printf(n);break;case 3: printf(入队操作

14、); rudui();printf(n);break;case 4: printf(出队操作); chudui();printf(n);break;default:printf(errorn);printf(n是否继续y/n:n); scanf(%c,&frag); getchar();while(frag=y);实验3 二叉树的构造一、实验目的与基本要求熟练掌握二叉树的构造方法。二、实验条件1硬件:微机2软件:操作系统和C语言系统三、实验方法确定存储结构后,上机调试二叉树的构造方法。四、实验内容设计一个读入一串整数构成一棵二叉树的程序。(深度至少为2)实验代码:#include#includ

15、estruct btnode /二叉树结构体 char d; struct btnode *lchild; struct btnode *rchild;struct btnode *creatbt(struct btnode *bt,int k) /建立二叉树 struct btnode *p,*t; t=(struct btnode *)malloc(sizeof(struct btnode); printf(输入元素(输入时结束所在分枝):); char b; scanf(%c,&b); getchar(); if(b!=0) p=(struct btnode *)malloc(sizeo

16、f(struct btnode); p-d=b;p-lchild=NULL;p-rchild=NULL; if(k=0) t=p; if(k=1) bt-lchild=p; if(k=2) bt-rchild=p; creatbt(p,1); creatbt(p,2); return t;void pretrav(struct btnode *bt) /前序遍历 if(bt!=NULL) printf(%cn,bt-d); pretrav(bt-lchild); pretrav(bt-rchild); return;void intrav(struct btnode *bt) /中序遍历 if

17、(bt!=NULL) intrav(bt-lchild); printf(%cn,bt-d); intrav(bt-rchild); return;void postrav(struct btnode *bt) /后序遍历 if(bt!=NULL) postrav(bt-lchild); postrav(bt-rchild); printf(%cn,bt-d); return;int main() struct btnode *m;char frag=y; int s; do printf(请选择n1、建立二叉树n2、前序遍历n3、中序遍历n4、后序遍历n5、退出n); scanf(%d,&s

18、); getchar(); switch(s) case 1:m=creatbt(0,0);break; case 2:pretrav(m);break; case 3:intrav(m);break; case 4:postrav(m);break; default: printf(是否继续n y/n); scanf(%c,&frag); getchar(); ;break; while(frag=y);实验4 排序的基本操作一、实验目的与基本要求1掌握常用的排序方法,并用高级语言实现排序算法。2理解排序的定义和各种排序的特点。3了解排序过程以及依据的原则,并了解各种排序方法的时间复杂度分析

19、。二、实验条件1硬件:一台微机2软件:操作系统和C语言系统三、实验方法确定存储结构后,上机调试不同的排序方法。四、实验内容1设计一待排序的线性表以顺序存储结构存储,试写出冒泡排序算法。2给出n个学生的考试成绩表,每条信息由姓名与分数组成,试设计一个算法:(1)按分数高低次序,打印出每个学生在考试中获得的名次,分数相同的为同一名次。(2)按名次列出每个学生的姓名与分数。实验代码:#includestdlib.h#includestdio.hstruct node /结构体变量int f;int m;char n;struct node *next;void pre(struct node *he

20、ad) /打印数据struct node *p; printf(链表中的数据为:n); printf(名次 姓名 分数n);p=head;while(p!=NULL)printf(%5d,p-m);printf(%5c,p-n);printf(%5d,p-f);printf(n);p=p-next;printf(n);int num;struct node *creat() /建立数据 struct node *head,*q,*p; int x,y,j;char z;printf(输入录入学生的人数:n);head=NULL;q=NULL;scanf(%d,&num);getchar();f

21、or(j=0;jn=z;p-f=x;p-m=0;p-next=NULL;if(head=NULL) head=p;else q-next=p;q=p;pre(head);return (head);struct node *paixu(struct node *head) /按分数排序 int i,j; struct node *q,*p,*k,*t; t=(struct node *)malloc(sizeof(struct node); t-next=head; for(i=num-1;i0;i-) q=t; for(j=0;jnext; k=p-next; if(k-fp-f) p-next=k-next; q-next=k; k-next=p; q=q-next; q=t-next; j=0; q-m=1;for(i=1;inext; if(q-f=p-f) p-m=q-m; else p-m=q-m+1; q=q-next; return(t-next);void main()struct node *head,*m;head=creat();m=paixu(head);printf(按名次排序后);pre(m);getchar();

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

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