实验6_结构体+1207122136+王黄昕
数据结构实验指导书及答案(徐州工程学院)
《数据结构实验》实验指导书及答案信电工程学院计算机科学和技术教研室编2011.12数据结构实验所有代码整理作者郑涛声明:在这里我整理了数据结构实验的所有代码,希望能对大家的数据结构实验的考试有所帮助,大家可以有选择地浏览,特别针对一些重点知识需要加强记忆(ps:重点知识最好让孙天凯给出),希望大家能够在数据结构实验的考试中取得令人满意的成绩,如果有做的不好的地方请大家谅解并欢迎予以指正。
实验一熟悉编程环境实验预备知识:1.熟悉本课程的语言编译环境(TC或VC),能够用C语言编写完整的程序,并能够发现和改正错误。
2.能够灵活的编写C程序,并能够熟练输入C程序。
一、实验目的1.熟悉C语言编译环境,掌握C程序的编写、编译、运行和调试过程。
2.能够熟练的将C程序存储到指定位置。
二、实验环境⒈硬件:每个学生需配备计算机一台。
⒉软件:Windows操作系统+Turbo C;三、实验要求1.将实验中每个功能用一个函数实现。
2.每个输入前要有输入提示(如:请输入2个整数当中用空格分割:),每个输出数据都要求有内容说明(如:280和100的和是:380。
)。
3.函数名称和变量名称等用英文或英文简写(每个单词第一个字母大写)形式说明。
四、实验内容1.在自己的U盘中建立“姓名+学号”文件夹,并在该文件夹中创建“实验1”文件夹(以后每次实验分别创建对应的文件夹),本次实验的所有程序和数据都要求存储到本文件夹中(以后实验都按照本次要求)。
2.编写一个输入某个学生10门课程成绩的函数(10门课程成绩放到结构体数组中,结构体包括:课程编号,课程名称,课程成绩)。
3.编写一个求10门成绩中最高成绩的函数,输出最高成绩和对应的课程名称,如果有多个最高成绩,则每个最高成绩均输出。
4.编写一个求10门成绩平均成绩的函数。
5.编写函数求出比平均成绩高的所有课程及成绩。
#include<stdio.h>#include<conio.h>struct subject{int subject_id;char subject_name[20];double subject_grades;};struct subject sub[10];void input(){int i;printf("please input:\n");for(i=0;i<10;i++){scanf("%d %s %lf",&sub[i].subject_id,&sub[i].subject_name,&sub[i].subject_g rades);}printf("you just input:\n");for(i=0;i<3;i++){printf("%d %s %lf\n",sub[i].subject_id,sub[i].subject_name,sub[i].subject_g rades);}}void subject_max(){int i,flag;double max=sub[0].subject_grades;for(i=0;i<10;i++){if(sub[i].subject_grades>max)max=sub[i].subject_grades;flag=i;}printf("The high score of subjectis %s %lf\n",sub[flag].subject_name,max);}void subject_average(){int i;double average,sum=sub[0].subject_grades;for(i=1;i<10;i++){sum+=sub[i].subject_grades;}average=sum/10;printf("subject's average is %lf\n",average);}void subjct_gtaverage(){int i,flag;double average,sum=sub[0].subject_grades;for(i=1;i<10;i++){sum+=sub[i].subject_grades;}average=sum/10;for(i=0;i<10;i++){if(sub[i].subject_grades>average){flag=i;printf("subject greater than average is %s %lf\n",sub[flag].subject_name,sub[flag].subject_grades);}}}int main(){input();subject_max();subject_average();subjct_gtaverage();return 0;}实验二顺序表的基本操作实验预备知识:1.熟练运用数组进行程序设计,掌握数组名和指针作为函数参数。
厦门理工学院数据结构实验
《数据结构》实验报告实验序号:6 实验项目名称:树和二叉树的操作2.编写函数实现计算叶节点个数。
附源程序清单:#include <stdio.h>#include <stdlib.h>#define max 50typedef struct liuyu{int data;struct liuyu *lchild,*rchild;}test;liuyu *root,*p,*q[max];int sum=0;int m=sizeof(test);void insert_data(int x) /*生成二叉排序树*/{liuyu *p,*q,*s;s=(test*)malloc(m);s->data=x;s->lchild=NULL;s->rchild=NULL;if(!root){root=s;}p=root;while(p) /*如何接入二叉排序树的适当位置*/ {q=p;if(p->data==x){printf("data already exist! \n");return;}else if(x<p->data)p=p->lchild;elsep=p->rchild;}if(x<q->data)q->lchild=s;elseq->rchild=s;}void Preorder(liuyu *bt) //先序遍历输出{if(bt){printf("%d ",bt->data);Preorder(bt->lchild);Preorder(bt->rchild);}}void Inorder(liuyu *bt) //中序遍历输出{if(bt){Inorder(bt->lchild);printf("%d ",bt->data);Inorder(bt->rchild);}}void Postorder(liuyu *bt) //后序遍历输出{if(bt){Postorder(bt->lchild);Postorder(bt->rchild);printf("%d ",bt->data);}}int Leafnum(liuyu *bt){int i=0,j,k;if(bt==NULL) return 0;if(bt->lchild==NULL&&bt->rchild==NULL) i++;j=Leafnum(bt->lchild);k=Leafnum(bt->rchild);return i+j+k;}void main() /*先生成二叉排序树*/{int i,x;i=1;root=NULL; /*千万别忘了赋初值给root!*/do{printf("please input data%d:",i);i++;scanf("%d",&x); /*从键盘采集数据,以-9999表示输入结束*/if(x==-9999){printf("\nNow output data value:\n");}elseinsert_data(x); /*调用插入数据元素的函数*/}while(x!=-9999);printf("先序遍历输出:");Preorder(root);printf("\n中序遍历输出:");Inorder(root);printf("\n后序遍历输出:");Postorder(root);printf("\n叶子总数为:");printf("%d\n",Leafnum(root)); }。
2012版《数据结构A》课程实验指导书
2012版《数据结构A》课程实验指导书《数据结构A》课程实验指导书Data Structure Course Design课程编号:06311360 学时:15 学分:1先修课程:程序设计基础、⾯向对象程序设计适⽤专业:计算机科学与技术、⽹络⼯程、软件⼯程⼀、实验⽬的《数据结构A》课程是计算机科学与技术及其相关专业的⼀门重要的专业基础课。
在课堂教学中,⽐较全⾯、概括性地讲述数据结构学科中⼀些基础性知识、重要概念及各种算法,通过该实验教学和学⽣的上机实践,将这些基础性知识、重要概念及各种算法,在计算机上编程实现,使学⽣能够达到以下实验教学⽬标:1.掌握计算机处理数据的基本⽅法;2.了解算法的时间及空间分析⽅法;3.能够为实际应⽤所涉及的数据选择适当的逻辑结构、存储结构及相应的算法;4.通过在计算机上编程实现课程中介绍的各种算法,在程序设计能⼒⽅⾯得到提升。
⼆、上机实验总体要求1.每位同学准备⼀个实验本,上机前作好充分的准备⼯作,预习本次实验的内容,事先熟悉与实验有关的软硬件环境,编写好程序代码,供上机时使⽤。
2.实验时遵守实验室的规章制度,爱护实验设备,原则上每⼈固定实验设备,对于实验设备出现的问题,要及时向指导⽼师汇报。
3.编程序过程中要注意多存盘,避免由于死机等原因造成的不必要的重复录⼊。
4.内部⽂档要求:每个源⽂件和头⽂件都必须在⽂件⾸部的注释中注明设计者姓名,项⽬名(即我们的上机题⽬名),创建⽇期和最近⼀次修改⽇期。
包含main()函数的源⽂件必须在⾸部注释后另加⼀段注释,简要描述⼀下程序的⽬的和⽤到的主要数据结构。
⽂件注释格式如下:⽂件名称:项⽬名称:创建者:创建时间:最后修改时间:功能:⽂件中的函数名称和简单功能描述:⽂件中定义的全局变量和简单功能描述:⽂件中⽤到的他处定义的全局变量及其出处:与其他⽂件的依赖关系:◆每个类必须包含⾸部注释块,适度地描述这个类的⽬的。
类的⾸部注释应该紧挨着放在类的声明(⼀般在头⽂件⾥)前⾯。
数据结构实验教学手册(最新整理)
{
int i,index;
for(i=0;i<L->last;i++)
if(L->data[i]==x)
index=i;
return (index+1);
}
void print(SeqList *L)
//打印线性表
{
int i;
printf("该线性表为:");
许昌学院计算机科学与技术学院《数据结构》课程实验教学手册
}
if(L->last>=MAXSIZE-1)
{
printf("表已满无法插入!");
return 0;
}
for(j=L->last;j>=i-1;j--)
L->data[j+1]=L->data[j];
L->data[i-1]=x;
L->last++;
printf("插入成功\n");
}
int Delete_SeqList(SeqList *L,int i)//删除操作
switch(choice){
case 1:
int x,j;
printf("请输入要插入的数的位置和数值:");
scanf("%d%d",&j,&x);
insert_SeqList(&L,j,x);
break;
case 2:
int m;
printf("请输入要删除的数的位置:");
scanf("%d",&m);
scanf("%d",&st);
云南大学软件学院数据结构实验六实验报告——赫夫曼编码译码器
云南大学软件学院数据结构实验报告(本实验项目方案受“教育部人才培养模式创新实验区(X3108005)”项目资助)实验难度: A □ B □ C □学期:任课教师:实验题目: 实验五树及其应用小组长:联系电话:电子邮件:完成提交时间:年月日云南大学软件学院2010学年秋季学期《数据结构实验》成绩考核表学号:姓名:本人承担角色:课题分析,算法设计,程序编写,后期调试,完成实验报告综合得分:(满分100分)指导教师:年月日(注:此表在难度为C时使用,每个成员一份。
)云南大学软件学院2010学年秋季学期《数据结构实验》成绩考核表学号:姓名:本人承担角色:课题分析,算法设计,后期调试,完成实验报告综合得分:(满分100分)指导教师:年月日(注:此表在难度为C时使用,每个成员一份。
)(下面的内容由学生填写,格式统一为,字体: 楷体, 行距: 固定行距18,字号: 小四,个人报告按下面每一项的百分比打分。
难度A满分70分,难度B满分90分)一、【实验构思(Conceive)】(10%)(本部分应包括:描述实验实现的基本思路,包括所用到的离散数学、工程数学、程序设计、算法等相关知识)1.数据结构算法的知识:●树的定义。
●树的节点和边的表示。
●树的存储结构。
●树的分类:二叉树—》Heffman树。
●树的遍历:前序遍历,中序遍历,后序遍历。
2.面向对象的程序设计相关知识:●C#基本语法知识。
●类的定义,实例化。
●对象的生成调用。
●变量的传递。
二、【实验设计(Design)】(20%)(本部分应包括:抽象数据类型的功能规格说明、主程序模块、各子程序模块的伪码说明,主程序模块与各子程序模块间的调用关系)本实验创建了四个类Form类//用于窗口的初始化,控制各控件的属性和动作Data类//用于本程序所需的频度表数组的生成以及调用HuffmanTree类//用于构造Huffman树以及控制树的各项操作HuffmanTreeNode类//用于构造Huffman树的节点抽象数据类型的功能规格说明:窗口初始化:private void Form1_Load(object sender, EventArgs e)转换模式:private void button1_Click(object sender, EventArgs e)private void button1_Click(object sender, EventArgs e)开始按钮:private void button3_Click(object sender, EventArgs e)声明全局数组:public member[] allMembers = new member[27];定义结构体数组:public struct member{public char ch;//保存频度字符public int frequentness;//保存频度}Data的构造函数(创建Huffman树)public Data()Data类中的寻找当前最大项函数:public int FindMax()Data类中的寻找当前第二大项函数:public int FindSecondMax()Data类中的计算当前有效项的数目的函数:public int Count() HuffmanTreeNode类中创建节点的构造函数:public HuffmanTreeNode (char ch2 ,int frequentness2)HuffmanTree类中定义的节点类型:public HuffmanTreeNode root,p,r; HuffmanTree类中实例化一个Data类来构造频度表:public DatafrequentnessTable; HuffmanTree类中的构造函数,创建一棵Huffman树:public HuffmanTree() HuffmanTree类中的成员函数,对于指定的字符实行中序遍历,遍历完之后逆向回溯得到该字符的Huffman编码:public int SearchTree()HuffmanTree类中的两个节点变量,用于判断左右子树:public int SearchTree()主程序模块伪代码说明:创建新的字母频度表:frequentnessTable = new Data();创建栈来倒装输出赫夫曼编码:Stack<char> HuffmanCode = Stack<char>;退出程序:this.Close()子程序伪代码说明(HuffmanTree):构建Huffman树:public HuffmanTreeNode root,p,r;核心程序段(生成Huffman编码):while (r == root){r = p.parent;if (p == r.left)HuffmanCode.Push('1');//栈中存1elseHuffmanCode.Push('0');//栈中存0p = p.parent;}返回栈中元素个数:public int count { get{ return list.Count; } }主程序模块与各子程序模块间的调用关系:Class Form1调用Class Data初始化程序所要的各项数据。
《数据结构》实验指导书2011
《数据结构》实验指导书2011数据结构实验指导书南京工程学院信息管理与信息系统教研室2011年3月实验一线性表操作一、实验目的1.熟悉C语言的上机环境,进一步掌握C语言的结构特点。
2.掌握线性表的顺序存储结构的定义及C语言实现。
3.掌握线性表的链式存储结构——单链表的定义及C语言实现。
4.掌握线性表在顺序存储结构即顺序表中的各种基本操作。
5.掌握线性表在链式存储结构——单链表中的各种基本操作。
二、实验内容1.顺序线性表的建立、插入及删除。
2.链式线性表的建立、插入及删除。
三、实验步骤1.建立含n个数据元素的顺序表并输出该表中各元素的值及顺序表的长度。
2.利用前面的实验先建立一个顺序表L={21,23,14,5,56,17,31},然后在第i个位置插入元素68。
3.建立一个带头结点的单链表,结点的值域为整型数据。
要求将用户输入的数据按尾插入法来建立相应单链表。
四、实现提示1.由于C语言的数组类型也有随机存取的特点,一维数组的机内表示就是顺序结构。
因此,可用C语言的一维数组实现线性表的顺序存储。
在此,我们利用C语言的结构体类型定义顺序表:#define MAXSIZE 1024typedef int elemtype; /* 线性表中存放整型元素*/typedef struct{ elemtype vec[MAXSIZE];int len; /* 顺序表的长度*/}sequenlist;将此结构定义放在一个头文件sqlist.h里,可避免在后面的参考程序中代码重复书写,另外在该头文件里给出顺序表的建立及常量的定义。
2. 注意如何取到第i个元素,在插入过程中注意溢出情况以及数组的下标与位序(顺序表中元素的次序)的区别。
3.单链表的结点结构除数据域外,还含有一个指针域。
用C语言描述结点结构如下:typedef int elemtype;typedef struct node{ elemtype data; //数据域struct node *next; //指针域}linklist;注意结点的建立方法及构造新结点时指针的变化。
华南农业大学数据结构上机实验指导书及标准答案
目录实验一线性表ﻩ错误!未定义书签。
(一)实验目的............................................................................................................... 错误!未定义书签。
(二) 实验内容ﻩ错误!未定义书签。
(三)实验报告ﻩ错误!未定义书签。
实验二堆栈ﻩ错误!未定义书签。
(一)实验目的 .............................................................................................................. 错误!未定义书签。
(二)实验内容 .............................................................................................................. 错误!未定义书签。
(三) 实验报告................................................................................................................. 错误!未定义书签。
实验三队列..................................................................................................................... 错误!未定义书签。
(一) 实验目的ﻩ错误!未定义书签。
(二) 实验内容................................................................................................................. 错误!未定义书签。
数据结构课程实验指导书
《数据结构》实验指导书第一部分前言一、实验的目的《数据结构》是计算机学科一门重要的专业基础课程,也是计算机学科的一门核心课程。
本课程的另一重要教学目的是训练学生进行复杂程序设计的技能和培养良好程序设计的习惯,要做到这一点,上机实习是必须的。
数据结构实验是对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。
通常,实验课题中的问题比平时的习题复杂得多,也更接近实际。
实验着眼于原理与应用的结合点,使学生学会如何把书上学到的知识用于解决实际问题,训练学生实际动手进行程序设计和调试程序的能力,加深对数据结构相关概念和算法的理解。
通过完成本实验课程的实验,学生应学会并掌握本课程的基本和重点知识,深刻理解逻辑结构、物理结构和算法设计之间的关系,初步学会算法分析的方法,并能在一定范围内运用所掌握的分析方法进行算法分析,培养软件工作所需要的动手能力和作为一个软件工作者所应具备的科学工作方法和作风。
二、实验前的准备工作1.每个学生需配备一台计算机,操作系统需Windows2000/XP以上版本,软件需Visual C++6.0以上版本。
2.实验前要求学生按实验要求编写好相关实验程序,准备上机调试运行。
三、实验的步骤(一)建立一个文件夹,如“数据结构”,用来存放自己的所有实验程序,在该文件夹中建立子目录用来存放每个项目(一个子目录一个项目),如“顺序表”,项目中需要的所有文件都存在该文件夹中。
(二)新建一个项目文件1.双击Visual C++ 6.0快捷图标,进入Visual C++ 6.0集成开发环境;或者点击“开始”→“程序”→“Microsoft Visual Studio 6.0”→“Microsoft Visual C++ 6.0”进入Visual C++ 6.0集成开发环境。
2.单击“File”菜单,选择“New”命令3.创建一个项目文件并保存在项目所在文件夹中;3. 创建源程序文件并保存在项目所在文件夹中;4.输入源程序;5.单击“保存”按钮保存源程序。
2014数据结构—实验指导书——学生
//以下是输出单链表 void OutputList_L(LinkList L){ LinkList p = L->next; if(p==NULL){ printf("\n No list\n"); return;
5
} printf("The list is:\n"); while (p ) { printf("%4d",p->data); p = p->next; } printf("\n"); } //在第 i 个元素之前插入一个元素 Status ListInsert_L(LinkList L, int i, ElemType e) { LinkList p,s; int j=0; //请在此填写代码,将该算法补充完整,参见书本 P30 算法 2.9 } // 删除第 i 个元素 Status ListDelete_L(LinkList L, int i, ElemType &e) { LinkList p,q; int j=0; //请在此填写代码,将该算法补充完整,参见书本 P30 算法 2.10 } void main() { LinkList L; int choice,i; ElemType e; choice=1; printf("We should create a list first!"); CreatList_L(L); OutputList_L(L); while(choice!=0) { printf("\n printf(" 1 printf(" 2 printf(" 3 printf(" 4 insert a elem "); delete a elem "); output a list"); exit "); menu \n");
L7_结构体实验报告
实验名称结构体
实验项目
专业班级姓名学号
指导教师成绩日期
一、实验目的
1.掌握结构体的定义
2.熟悉结构体的初始化
二、实验内容和步骤
1.有5个学生,每个学生的数据包括学号、姓名、三门课的成绩,从键盘输入5个学生数据,要求打印出三门课总平均成绩,以及三门课总分最高的学生的数据(包括学号、姓名、三门课的成绩、平均分数)。要求用一个input函数输入5个学生数据;用一个average函数求总平均分;用max函数找出最高分学生数据;总平均分和最高分的学生的数据都在主函数中输出。
2010数据结构实验指导书
《数据结构B》实验指导书目录实验说明及要求 0实验一线性表..................................................................................... 错误!未定义书签。
实验二栈............................................................................................ 错误!未定义书签。
实验三队列 ........................................................................................ 错误!未定义书签。
实验四树.. (7)实验五散列表..................................................................................... 错误!未定义书签。
实验六排序 ........................................................................................ 错误!未定义书签。
实验七查找 ........................................................................................ 错误!未定义书签。
实验八图. (20)综合设计考核 (23)附录1 在V isual 2003中建立、编译和运行程序 (24)附录2 使用教材提供的参考文件的方法 (29)附录3 如何设置编译器生成C代码 (32)参考文献 (33)实验说明及要求一实验说明《数据结构B》实验是为了辅助《数据结构B》(双语教学)而开展的。
因为理论教学采用了两种教材(《数据结构与算法分析》的C++版和C语言描述版),所以在实验时程序的编写既允许采用C语言,又允许采用C++语言。
【VIP专享】数据库实验报告样例
南京信息工程大学数据库系统实验(实习)报告实验(实习)名称数据查询实验(实习)日期2014.12.2 得分指导老师马瑞系计算机与软件学院专业网络工程班级2姓名梁利学号20121346067一、实验目的(一)索引1.掌握使用对象资源管理器创建索引的方法。
2.掌握T—SQL创建和删除索引语句的使用方法。
3.掌握查看索引的系统存储过程的使用方法。
(二)视图1.掌握使用对象资源管理器创建视图的方法。
2.掌握T-SQL语句创建和修改视图语句的使用方法。
3.掌握视图的查询方法。
(三)数据库的完整性1.掌握SQL Server 2012的六类约束:NOT NULL、PRIMARY KEY、CHECK、FOREIGN KEY、DEFAULT和UNIQUE的使用方法,在创建表时用相应的约束描述尸体完整性、参照完整性和用户定义完整性。
2.掌握增加和删除约束的方法。
二、实验内容与步骤索引1.在对象资源管理器中创建索引。
在XSCJ数据库的Student表的学号列上建立非聚簇索引StuNo_ind。
(1).实验步骤:在对象资源管理器中选择XSCj数据库的Student表,展开Student 表,在索引借点上单击鼠标右键,在弹出的快捷菜单上选择“新建索引”命令,打开新建窗口,填写索引名,选择学号列。
表上的所有索引。
2.使用T-SQL语句创建和删除索引。
(1). 在XSCJ数据库Course表的“课程号”列上建立非聚簇索引CourseNo_ind。
在查询分析器中输入以下T-SQL语句并执行。
USE XSCJIF EXISTS(SELECT name FROM sysindexesWHERE name='CourseNo_ind')DROP INDEX Course.CourseNo_indGOCREATE INDEX CourseNo_ind ON Course(课程号)GO(2). 删除Course表上索引CourseNo_ind。
数据结构实验六常用排序算法的对比分析
数据结构
石家庄铁道学院 刘立嘉
实验报告的内容
�
参见实验指导书!
4
数据结构
算法与数据结构
六 常用排序算法的对比分析 实验 实验六
石家庄铁道大学信息学院 刘立嘉
数据结构
石家庄铁道院 刘立嘉
实验目的
掌握内部排序的基本概念; � 掌握常用的内部排序方法; � 掌握内部排序的性能评价; � 掌握排序方法在实际问题中的应用;
�
2
数据结构
石家庄铁道学院 刘立嘉
实验内容
�
哈夫曼编/译码器哈希表设计 实现以下常用的内部排序算法并进行性能比 较:起泡排序、直接插入排序、简单选择排 序、快速排序、希尔排序、堆排序。 基本要求: 待排序表的表长不少于100;其中的数据要用 伪随机数产生程序产生;至少要用5组不同的 输入数据作比较;比较的指标为有关键字参 加的比较次数和关键字移动次数(关键字交 换计为3次移动)。 选作内容见 实验指导书。
《数据结构》实验指导书
} Triple;
typedef struct
{Triple data[MAXSIZE+1];
//非零元素的三元组表,data[0]未用
int mu,nu,tu;//矩阵的行数、列数和非零元素个数
typedef struct list
{ElemType elem[MAXSIZE];//静态线性表
int length; //顺序表的实际长度
} SqList;//顺序表的类型名
五、注意问题
1.插入、删除时元素的移动原因、方向及先后顺序。
4.编写函数,借助队列实现二叉树的层次遍历算法。
5.编写函数,求二叉树的高度。
6.编写函数,求二叉树的结点个数。
7.编写函数,求二叉树的叶子个数。
8.编写函数,交换二叉树每个结点的左子树和右子树。
9.编写一个主函数,在主函数中设计一个简单的菜单,分别调试上述算法。
六、实验报告
根据实验情况和结果撰写并递交实验报告。
实验三 栈和队列
一、预备知识
1.栈的顺序存储和链式存储结构的类型定义方法及其基本操作算法
2.队列的顺序存储和链式存储结构的类型定义方法及其基本操作算法
二、实验目的
1.掌握栈、队列的思想及其存储实现
2.掌握栈、队列的常见算法的程序实现
8.编写函数,实现输入一个元素x,把它插入到有序表中,使顺序表依然有序。
9.编写一个主函数,在主函数中设计一个简单的菜单,分别调试上述算法。
四、实验说明
1.顺序表的存储定义
#define MAXSIZE 100 //顺序表的最大元素个数
九江学院 数据结构 实验报告 完整答案
《数据结构》实验报告班级学号:姓名:《数据结构》实验报告学院:信息科学与技术学院专业:学期:班级:学号:姓名:易网返利网——淘宝购物返现逐新时尚-品牌服装-提供:目录实验1 函数、指针、结构体复习 (1)1.1 实验目的 (1)1.2 实验准备 (1)1.3 实验任务 (1)实验2 线性表 (4)2.1 实验目的 (4)2.2 实验准备 (4)2.3 实验任务 (4)实验3 栈和队列 (19)3.1 实验目的 (19)3.2 实验准备 (19)3.3 实验任务 (19)实验4 线性表的综合应用 (27)4.1 实验目的 (27)4.2 实验准备 (27)4.3 实验任务 (27)实验5 树和二叉树 (32)5.1 实验目的 (32)5.2 实验准备 (32)5.3 实验任务 (32)实验6 图 (42)6.1 实验目的 (42)6.2 实验准备 (42)6.3 实验任务 (42)实验7 查找 (46)7.1 实验目的 (46)7.2 实验准备 (46)7.3 实验任务 (46)实验8 排序 (55)8.1 实验目的 (55)8.2 实验准备 (55)8.3 实验任务 (55)实验9 综合实验 (58)9.1 实验目的 (60)9.2 实验预习 (60)9.3 实验任务 (60)实验1 函数、指针、结构体复习院(系):信息科学与技术学院课程名称:数据结构教师签名:1.1 实验目的1.掌握C语言的语法并由算法形成相应的程序。
2.熟练掌握C语言函数调用的相关知识点。
3.熟练掌握C语言的指针和结构体相关知识点。
4.理解数据结构的基本概念。
1.2 实验准备1.复习C语言的函数调用、指针、结构体的相关知识点。
2.算法的概念和算法分析等知识。
3.C语言程序设计有关函数及数组等的知识及编程环境的使用方法。
4.复习课堂讲解的理论内容。
1.3 实验任务1.在提示/**********blank**********/下面填写合适的内容完成程序设计。
数据结构实验
《数据结构实验》课程一、实验的目的与任务通过理论与实际应用相结合,让学生根据所学内容,利用数据结构解决各种实际问题。
通过上机实习,增强学生的编程能力和分析问题的能力,训练学生进行复杂程序设计的技能,培养良好程序设计的习惯和学生实际动手能力,达到学以致用目的。
二、实验教学的基本要求实验一:复习C语言结构体的用法主要内容:有5个学生,每个学生的数据包括学号、姓名、三门课的成绩、平均分,要求从键盘依次输入5个学生的学号、姓名、三门课成绩,自动计算三门课的平均分数,并将5个学生的数据在屏幕上输出)要求:通过实验程序,分析它们的时间复杂度,认识算法时间复杂度,掌握其分析的基本方法。
实验二:线性表子系统主要内容:用结构体描述一个字符型的单链表;创建线性表;在线性表中插入元素、删除元素、显示线性表中所有元素;用if语句设计一个选择式菜单。
要求:掌握线性表的特点,线性表顺序存储结构和链式存储结构的基本运算,掌握线性表的创建、插入、删除和显示线性表中元素等基本操作。
实验三:栈子系统主要内容:设计一个字符型的链栈;编写进栈、出栈、显示栈中全部元素的程序;编写一个把十进制整数转换成二进制数的应用程序(选做);编写一个把中缀表达式转换成后缀表达式(逆波兰式)的应用程序(选做);设计一个选择式菜单。
要求:掌握栈的特点及其描述方法;掌握用链式存储结构实现一个栈;掌握建栈的各种等基本操作;掌握栈的几个典型应用的算法。
实验四:队列子系统主要内容:设计一个字符型的链队列;编写队列的进队、出队、读队头元素、显示队列中全部元素程序;设计一个选择式菜单,以菜单方式选择队列的各种基本操作。
要求:掌握队列的特点及其描述方法;用链式结构实现一个队列;掌握队列的各种基本操作;掌握队列的简单应用程序。
实验五:串子系统主要内容:由用户通过键盘输入建立一个字符串;编写插入、删除、查找、比较、取子字符串、连接字符串、显示、模式匹配(选做)等程序;设计一个选择式菜单,以菜单方式选择上述操作。
山东大学数据结构实验报告六
MaxHeap LMaxHeap,RMaxHeap;
MakeHeap(a[0],LMaxHeap,RMaxHeap);
for(int i=1;i<n;i++)
Insert(a[i]);
return *this;
}
void MaxHeap::HeapSort(int * a,int n)
{
arent!=0)
else{
root = new BinaryTreeNode(x);
last=p_last=root;
state++;}
return *this;
}
void MaxHeap::Adjust(BinaryTreeNode *u) {
if (!u->LeftChild && !u->RightChild)
BinaryTreeNode* LocateLast(BinaryTreeNode *u,int k,int i);
private:
MaxHeap *heap;
};
void MaxHeap::MakeHeap(int element, MaxHeap& left, MaxHeap& right)
{
root = new BinaryTreeNode(element, , ;
cout<<roots->data<<" ";
if(roots->LeftChild)(roots->LeftChild);
if(roots->RightChild)(roots->RightChild);
try{
数据结构实验C语言版
数据结构实验C语言版数据结构实验C语言版文档一、实验目的本实验旨在通过实践操作,加深对C语言中数据结构的理解,掌握常用数据结构的实现方法,提高编程能力。
二、实验内容本实验共包含以下几个章节:1.线性表1.1 顺序表的实现1.2 链表的实现1.3 环形链表的实现2.栈与队列2.1 栈的实现2.2 队列的实现3.树与图3.1 二叉树的实现与遍历3.2 图的实现与遍历4.排序与查找4.1 冒泡排序4.2 快速排序4.3 二分查找5.其他常用数据结构5.1 哈希表5.2 AVL树5.3 并查集三、实验步骤1.线性表1.1 顺序表的实现- 定义顺序表结构体 - 初始化顺序表- 插入元素- 删除元素- 查找元素1.2 链表的实现- 定义链表结构体- 初始化链表- 插入节点- 删除节点- 查找节点1.3 环形链表的实现- 定义环形链表结构体 - 初始化环形链表- 插入节点- 删除节点- 查找节点2.栈与队列2.1 栈的实现- 定义栈结构体- 初始化栈- 入栈操作- 出栈操作- 获取栈顶元素2.2 队列的实现- 定义队列结构体- 初始化队列- 入队操作- 出队操作- 获取队首元素3.树与图3.1 二叉树的实现与遍历 - 定义二叉树结构体 - 创建二叉树- 先序遍历- 中序遍历- 后序遍历3.2 图的实现与遍历- 定义图结构体- 创建图- 广度优先搜索- 深度优先搜索4.排序与查找4.1 冒泡排序- 实现冒泡排序算法- 对数组进行排序4.2 快速排序- 实现快速排序算法- 对数组进行排序4.3 二分查找- 实现二分查找算法- 在有序数组中查找指定元素5.其他常用数据结构5.1 哈希表- 定义哈希表结构体- 初始化哈希表- 插入元素- 删除元素- 查找元素5.2 AVL树- 定义AVL树结构体- 插入节点- 删除节点- 查找节点5.3 并查集- 定义并查集结构体- 初始化并查集- 合并集合- 查找根节点四、附件本文档未涉及附件。
实验1_初识c语言与c编程环境+1207122136+王黄昕、
实验序号:1实验项目:初识C语言与C编程环境
学 号
1207122136
姓 名
王黄昕
专业、班级
软金1
实验地点
1-307
指导教师
谢彦麒
实验时间
2012.10.09
一、实验目的及要求
1.掌握Visual C 6.0程序设计集成环境的使用。
2.学会简单程序的调试。
二、实验设备(环境)及要求
注释/**/
四、分析与讨论
对上机实践结果进行分析,上机的心得体会。
五、教师评语
签名:
日期:
成绩
附源程序清单:
5.
#include<stdio.h>
void main()
{
int x,y,z;
printf("\nPlease input two integers:")
;
scanf("%d%d",&x,&y);
z=x-y;
printf(&}
运行结果截图:
【思考题】
1.什么是源程序?什么是编译程序?C语言源程序结构是怎样的?
通常把程序文本称为源程序。
对C源程序的编译是把C源程序翻译成可重定位的二进制目标程序,编译过程是由C编译程序完成的。
C语言源程序结构是一个或多个源文件组成。
2.对照课本源程序,举例说明程序中哪些是注释、预处理命令、声明语句、可执行语句、函数定义、函数调用、关键词、main()函数等。
使用Visual C++ 6.0;windows系列操作系统的环境。
三、实验内容与步骤
1.练习进入C语言编程界面(Visual C++ 6.0)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《高级语言程序设计》实验报告实验序号:6 实验项目名称:结构体
1.
#include<stdio.h>
void main()
{
struct S tudent
{
int num;
char name[20];
int classname;
float score[3];
float averscore;
float aver;
};
int i=0,k=0,max=0;
Student stu[20];
for(i=0;i<5;i++)
{
gets(stu[i].name);
scanf("%d,%d,%f,%f,%f",&stu[i].num,&stu[i].classname,&stu[i].score[0],&stu[i].score[1], &stu[i].score[2]);
getchar();
}
for(i=0;i<5;i++)
{
stu[i].averscore=(stu[i].score[0]+ stu[i].score[1]+stu[i].score[2])/3.0;
}
printf("\n%-10s%-10s%-10s%-5s%-5s%-5s%-10s\n","Name","Num","Classname"," score1","score2","score3","averscore");
for(i=0;i<5;i++)
{
printf("\n%-10s",stu[i].name);
printf("%-10d",stu[i].num);
printf("%-10d",stu[i].classname);
printf("%-5.4f",stu[i].score[0]);
printf("%-5.4f",stu[i].score[1]);
printf("%-5.4f",stu[i].score[2]);
printf("%-10f",stu[i].averscore);
}
for(i=0;i<5;i++)
{
if(stu[i].averscore>max)
{
max=stu[i].averscore;
k=i;
}
}
printf("\n平均分最高的学生:\n学号:%d,姓名:%s,班级:%d,平均分:%f\n",stu[k].num,stu[k].name,stu[k].classname,stu[k].averscore);
}
2.
#include<stdio.h>
void main()
{
struct worker
{
char name[20];
int year,salary;
}worker[5]={
{"zhou",2,1400},
{"wu",8,2100},
{"zheng",16,3600},
{"wang",36,4200},
{"chen",50,6000}};
int i;
printf("工资变化之前:\n");
for(i=0;i<5;i++)
printf("%-5s%-5d%-5d\n",worker[i].name,worker[i].year,worker[i].salary);
for(i=0;i<5;i++)
if(worker[i].year>30)
worker[i].salary+=100;
printf("工资变化之后:\n");
for(i=0;i<5;i++)
printf("%-5s%-5d%-5d\n",worker[i].name,worker[i].year,worker[i].salary);
}
3.。