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

合集下载

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

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

计算机软件技术基础实验报告自动化0901班郝万福学号:20092395实验1:线性表的排序与查找目的:掌握数据结构的基本概念、线性表的基本操作以及查找和排序方法的设计。

内容:键盘输入一组无序数据,添加到线性表中;排序线性表并输出排序结果;键盘输入一个数,并插入到排好序的线性表中(要求插入后的表仍为有序表),输出结果;键盘输入一个数,并从线性表中删除相应的数据,输出结果。

要求:程序清单;运行过程及运行结果。

实验代码:/*班级:自动化 0901 班姓名:郝万福学号:20092395编译环境: Visual Studio 2011Windows 7 x86-64 旗舰版*/#include"stdafx.h"#include"iostream"#include<conio.h>// 程序实现有各种方法,这里给出一个实例。

// 定义一个线性表const int nMaxSize = 15; // 最大值int nLen = 0; // 表中元素个数int nLinearList[nMaxSize];// 定义操作void LSort();void LOut();void LInsert(int n);void LDelete(int n);int main(){// 输入数据并放入线性表中printf("Please input data\n"); // std::cout << "Please input data\n";int nIn = 0;for (int i = 0; i <= 9; i++){scanf("%d",&nIn); // std::cin >> nIn;nLinearList[i] = nIn;nLen++;}LSort(); // 排序线性表LOut(); // 输出结果printf("Please input a data to insert \n");scanf("%d",&nIn);LInsert(nIn); // 输入一个数字,并插入到线性表中LOut();printf("Please input a data to delete \n");scanf("%d",&nIn);LDelete(nIn); // 输入一个数字,并从线性表中删除LOut();char chTmp;printf("Please input a char to finish this program.");chTmp = getch();return 0;}void LSort() // 冒泡排序,由大到小{for(int j=0;j<=10;j++){for (int i=0;i<11-j;i++)if (nLinearList[i]<nLinearList[i+1]){int temp=nLinearList[i];nLinearList[i]=nLinearList[i+1];nLinearList[i+1]=temp;}}}void LOut(){printf( "\n");for (int i = 0; i < nLen; i++){printf( "%d, ", nLinearList[i] );}printf( "\n");}void LInsert(int n){ nLen++;nLinearList[nLen] = n;for(int k=0;k<=nLen;k++){for (int l=0;l<nLen+1-k;l++)if (nLinearList[l]<nLinearList[l+1]) {int temp=nLinearList[l];nLinearList[l]=nLinearList[l+1]; nLinearList[l+1]=temp;}}}void LDelete(int n){int b=1;for(int k=0;k<=nLen;k++){if(n==nLinearList[k]) {b=0;}if(b==0){nLinearList[k]=nLinearList[k+1];}}nLen--;}实验结果:实验2:栈与队列的应用目的:掌握栈与队列的基本概念、基本操作及设计与应用。

电脑软件实验报告

电脑软件实验报告

实验名称:计算机软件应用实验实验日期:2023年3月15日实验地点:计算机实验室实验目的:1. 熟悉并掌握常用的电脑软件操作技巧。

2. 了解软件的功能及其在生活中的应用。

3. 提高计算机软件的使用效率。

一、实验内容1. 文字处理软件(Word)(1)实验目的:学习Word的基本操作,如新建文档、保存文档、设置字体格式、插入图片等。

(2)实验步骤:① 打开Word软件,新建一个空白文档;② 输入文字内容,并设置字体、字号、颜色等;③ 插入图片,调整图片大小和位置;④ 保存文档。

2. 电子表格软件(Excel)(1)实验目的:学习Excel的基本操作,如创建表格、输入数据、设置单元格格式、使用公式等。

(2)实验步骤:① 打开Excel软件,新建一个空白工作簿;② 创建表格,输入数据;③ 设置单元格格式,如字体、字号、颜色、边框等;④ 使用公式计算数据,如求和、平均值、最大值等。

3. 演示文稿软件(PowerPoint)(1)实验目的:学习PowerPoint的基本操作,如创建演示文稿、设置幻灯片背景、插入图片、添加动画等。

(2)实验步骤:① 打开PowerPoint软件,新建一个空白演示文稿;② 设置幻灯片背景,如颜色、图片等;③ 插入图片、文本框等元素;④ 添加动画效果,使演示文稿更具吸引力。

4. 网络安全软件(杀毒软件)(1)实验目的:学习网络安全软件的基本操作,如安装、卸载、更新病毒库、扫描电脑等。

(2)实验步骤:① 安装杀毒软件,如360安全卫士、瑞星杀毒等;② 更新病毒库,确保杀毒软件的病毒库是最新的;③ 扫描电脑,查找并清除病毒。

二、实验结果与分析1. 通过本次实验,掌握了Word、Excel、PowerPoint等常用软件的基本操作,提高了计算机软件的使用效率。

2. 在实验过程中,学会了设置字体格式、插入图片、使用公式、设置单元格格式、添加动画等技巧,为今后的学习和工作奠定了基础。

3. 在网络安全方面,学会了安装、卸载、更新病毒库、扫描电脑等操作,提高了网络安全意识。

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

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

计算机软件基础实验报告姓名学号实验目的1. 掌握C语言程序设计方法, 并学会上机调试。

2. 熟悉Huffman编码源程序,并构造Huffman树。

实验内容试设计一算法, 从包括n个元素的数组中, 求最大和最小元素, 并使得当n个元素为有序排列时, 元素之间的比较次数仅为n-1次。

在给出的Huffman编码源程序基础上, 要求画出Huffman树, 求出与等长编码相比时的压缩比。

实验要求1.根据实验内容编写算法, 并用 C 语言进行程序设计。

2.将所编程序在计算机上调试通过,并全面测试.实验结果1. 以一个含有8个元素的一维数组{1, 2, 3, 5, 7, 8, 9, 12}为例,设计程序如下:#include<stdio.h>int maxArray(int x ,int y);int minArray(int x ,int y);int main(void){int i = 0 ;int array[8]={ 1, 2, 3, 5, 7, 8, 9, 12} ;printf;do{scanf("%d",&array[i]);i++;} while(i < 8);int maxTemp = array[0];int minTemp = array[0];int maxIndex = 0;int minIndex = 0;for(i=1;i<8;i++){maxTemp = maxArray(array[i] , maxTemp);minTemp = minArray(array[i] , minTemp);}for(i=0;i<8;i++){if (maxTemp == array[i]){maxIndex = i;}if (minTemp == array[i]){minIndex = i;}}printf;return 0;}运行结果如下:2.Huffman编码源程序#include <dos.h>#include <conio.h>#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct{unsigned int weight; //结点权值unsigned int parent,lchild,rchild; //结点的父指针, 左右孩子指针}HTNode,*HuffmanTree; //动态分配数组存储哈夫曼树typedef char **HuffmanCode; //动态分配数组存储哈夫曼编码表void CreateHuffmanTree(HuffmanTree &,unsigned int*,int ); //生成哈夫曼树void HuffmanCoding(HuffmanTree,HuffmanCode &,int ); //对哈夫曼树进行编码void PrintHuffmanCode(HuffmanCode,unsigned int*,int); //显示哈夫曼编码void Select(HuffmanTree,int,int&,int&); //在数组中寻找权值最小的两个结点void main(){HuffmanTree HT; //哈夫曼树HTHuffmanCode HC; //哈夫曼编码表HCint n,i; //n是哈夫曼树叶子结点数unsigned int *w; //w存放叶子结点权值char j='y';printf("演示构造哈夫曼树.\n");printf("输入需要进行编码的字符数目.\n例如:8\n");printf("然后输入每个字符出现的次数/权值.\n");printf("例如:5 29 7 8 14 23 3 11\n");printf("自动构造一棵哈夫曼树并显示哈夫曼编码.\n");printf(" 5---0110\n 29---10\n 7---1110\n 8---1111\n 14---110\n");printf(" 23---00\n 3---0111\n 11---010\n");while(j!='N'&&j!='n'){printf("请输入字符数目:");scanf("%d",&n); //输入字符数目if(n<=1) {printf("该数不合理!\n");continue;}w=(unsigned int*)malloc(n*sizeof(unsigned int)); //开辟空间存放权值printf("请输入各字符出现的次数/权值:\n");for(i=0;i<n;i++) scanf("%d",&w[i]); //输入各字符出现的次数/权值CreateHuffmanTree(HT,w,n); //生成哈夫曼树HuffmanCoding(HT,HC,n); //进行哈夫曼编码PrintHuffmanCode(HC,w,n); //显示哈夫曼编码printf("哈夫曼树构造完毕, 还要继续吗?(Y/N)");scanf(" %c",&j);}}void CreateHuffmanTree(HuffmanTree &HT,unsigned int *w,int n){//w存放n个结点的权值, 将构造一棵哈夫曼树HTint i,m;int s1,s2;HuffmanTree p;if(n<=1) return;m=2*n-1; //n个叶子结点的哈夫曼树, 有2*n-1个结点HT=(HuffmanTree)malloc((m+1)*sizeof(HTNode)); //开辟2*n各结点空间for(p=HT+1,i=1;i<=n;++i,++p,++w) //进行初始化{p->weight=*w;p->parent=0;p->lchild=0;p->rchild=0;}for(;i<=m;++i,++p){p->weight=0;p->parent=0;p->lchild=0;p->rchild=0;}for(i=n+1;i<=m;++i) //建哈夫曼树{Select(HT,i-1,s1,s2);//从HT[1...i-1]中选择parent为0且weight最小的两个结点, 其序号分别为s1和s2HT[s1].parent=i; HT[s2].parent=i; //修改s1和s2结点的父指针parentHT[i].lchild=s1; HT[i].rchild=s2; //修改i结点的左右孩子指针HT[i].weight=HT[s1].weight+HT[s2].weight; //修改权值}}void HuffmanCoding(HuffmanTree HT,HuffmanCode &HC,int n){//将有n个叶子结点的哈夫曼树HT进行编码, 所编的码存放在HC中//方法是从叶子到根逆向求每个叶子结点的哈夫曼编码int i,c,f,start;char *cd;HC=(HuffmanCode)malloc((n+1)*sizeof(char *)); //分配n个编码的头指针向量cd=(char *)malloc(n*sizeof(char)); //开辟一个求编码的工作空间cd[n-1]='\0'; //编码结束符for(i=1;i<=n;++i) //逐个地求哈夫曼编码{start=n-1; //编码结束位置for(c=i,f=HT[i].parent;f!=0;c=f,f=HT[f].parent) //从叶子到根逆向求编码if(HT[f].lchild==c) cd[--start]='0'; //若是左孩子编为'0'else cd[--start]='1'; //若是右孩子编为'1'HC[i]=(char *)malloc((n-start)*sizeof(char)); //为第i个编码分配空间strcpy(HC[i],&cd[start]); //将编码从cd复制到HC中}free(cd); //释放工作空间}void PrintHuffmanCode(HuffmanCode HC,unsigned int *w,int n){//显示有n个叶子结点的哈夫曼树的编码表int i;printf("HuffmanCode is :\n");for(i=1;i<=n;i++){printf(" %3d---",w[i-1]);puts(HC[i]);}printf("\n");}void Select(HuffmanTree HT,int t,int&s1,int&s2){//在HT[1...t]中选择parent不为0且权值最小的两个结点, 其序号分别为s1和s2 int i,m,n;m=n=10000;for(i=1;i<=t;i++){if(HT[i].parent==0&&(HT[i].weight<m||HT[i].weight<n)) if(m<n){n=HT[i].weight;s2=i;}else {m=HT[i].weight;s1=i;}}if(s1>s2) //s1放较小的序号{i=s1;s1=s2;s2=i;}}运行结果如下:输入数据后的运行结果:实验心得要熟练掌握程序的编写, 如果没有一定的想象能力和大量的上机实践是根本无法完成的。

计算机软件基础实验报告

计算机软件基础实验报告

计算机软件基础(二)实验报告实验一DOS和WINDOWS95系统的基本操作一、实验要求和目的1.熟悉MS-DOS环境。

2.掌握常用DOS命令的基本操作。

二、软硬件环境1.硬件环境:微机CPU 486以上,500MB以上硬盘,32M以上内存;2.软件环境:装有MASM 5.0、DEBUG、LINK和EDIT等应用程序。

三、实验涉及的主要知识单元●DOS的功能和组成:DOS的主要功能是管理磁盘文件,管理显示器、键盘、磁盘驱动器、打印机等各种设备,负责监视计算机及执行的处理过程,以便有效地利用系统资源,方便用户使用。

从内部来看,DOS是完成各种功能的一组程序。

版本不同,程序的数日也不同,但组成DOS的最主要的程序有四个,即命令处理模块(COMMAND.COM)、磁盘操作管理模块(MS-DOS.SYS)、输入输出接口模块(10.SYS)和一个引导程序。

存放DOS程序模块的磁盘称为DOS系统盘。

DOS提供了多条操作命令,对一般用户最常用的是有关文件操作、文件目录操作、磁盘操作和若干系统命令。

DOS的人机界面采用的是命令行方式。

●DOS的启动:DOS的启动就是从系统盘上把DOS装入内存并执行的过程。

启动MS-DOS应用程序,有三种方法:第一种方法:从“开始”菜单启动MS-DOS操作系统。

步骤为:1.在Windows XP界面状态,单击“开始”|“运行”命令,如图2-1-1所示。

图1-1 “运行”命令条2.在“运行”对话框中键入“cmd”,如图2-1-2所示,单击“确定”按钮。

图1-2 “运行”对话框3.操作系统界面随即进入MS-DOS模式。

如图2-1-3所示。

图 1-3 “运行”对话框第二种方法:单击“开始”|“程序”|“附件”|“命令提示符”命令即可启动MS-DOS操作系统。

第三种方法:在“我的电脑”或“资源管理器”中,一级一级打开驱动器和文件夹,直至找到需要运行的MS-DOS操作系统,双击启动程序文件。

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

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

}linklist;
体 linklist *creat()
{

int i;
linklist *head,*r,*q;

q=(linklist *)malloc(LEN);
head=q;

r=q;
q->next=NULL;

printf("Please input the number:\n");
scanf("%d",&i);
计算机软件技术基础实验报告
《计算机软件技术基础》实验报告
专 业 _____________ 年 级 _____________ 学 号 _____________ 学生姓名 _____________ 指导老师 _____________
南华大学计算机学院编
1 / 29
计算机软件技术基础实验报告
I 实验要求
while(p!=0)
{
printf("%d\n",p->data);
p=p->next;
}
}
void deletelist(int i,linklist *head)
{
linklist *p,*q;
int k=1;
p=head;
q=p->next;
3 / 29
计算机软件技术基础实验报告
while((q!=NULL)&&(i!=k)) {
实验一 线性表
【实验目的】
1.熟悉 VC 环境,学习如何使用 C 语言实现线性表的两种存储结构。 2.通过编程、上机调试,进一步理解线性表的基本概念,熟练运用 C 语言实现线性表基本操作。 3.熟练掌握线性表的综合应用问题。

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

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

学院:信电学院班级:姓名:学号:课程:计算机软件技术基础实验日期:2013年11月22日成绩:实验四二叉树的建立与遍历一、实验目的1.掌握二叉树的建立、显示、节点数目、树深度等操作的程序实现。

2.掌握二叉树的先序、中序、后序遍历操作的程序实现。

3.加深对树的基本概念,基本理论及相应遍历算法的掌握与理解。

二、实验用软件和工具实验软件 VC++ 6.0三、实验步骤建立一棵二叉树、设计二叉树的节点数目、树深度等操作实现算法、调试并输出一棵树及其节点数目、树深度;编写一个程序实现如下功能:二叉树的先序、中序、后序遍历操作的程序实现,调试并输出结果。

1.定义一个二叉树结构体。

2.建立并显示一棵二叉树。

3.求二叉树的节点数目、树深度。

4.计算度为2,度为1的结点。

5.二叉树的先序、中序、后序遍历。

四、实验程序与程序运行结果/*二叉树的基本操作*/#include <stdio.h>#include <malloc.h>#define MaxSize 100#define MaxWidth 40typedef char ElemType;typedef struct node{ElemType data;struct node *left,*right;} BTree;void creatree(BTree **BT,char *str){BTree *stack[MaxSize],*p;int top=-1,k,j=0;/*top为栈指针,k指定是左还是右孩子,j为str指针*/char ch;学院:信电学院班级:姓名:学号:课程:计算机软件技术基础实验日期:2013年11月22日成绩:*BT=NULL;ch=str[j];while (ch!='\0'){switch(ch){case '(':top++;stack[top]=p;k=1; /*为左结点*/break;case ')':top--;break;case ',':k=2; /*为右结点*/break;default: p=(BTree *)malloc(sizeof(BTree));p->data=ch;p->left=p->right=NULL;if (*BT==NULL) /*根结点*/*BT=p;else{switch(k){case 1:stack[top]->left=p;break;case 2:stack[top]->right=p;}}}j++;ch=str[j];}}void disptree(BTree *BT){BTree *stack[MaxSize],*p;int level[MaxSize][2],top,n,i,width=4;if (BT!=NULL){printf("\n凹入表示法:\n");top=1;stack[top]=BT; /*根结点入栈*/level[top][0]=width;while (top>0){p=stack[top]; /*退栈并凹入显示该结点值*/n=level[top][0];for (i=1;i<=n;i++) /*其中n为显示场宽,字符以右对齐显示*/printf(" ");printf("%c",p->data);for (i=n+1;i<=MaxWidth;i+=2)printf("━");printf("\n");学院:信电学院班级:姓名:学号:课程:计算机软件技术基础实验日期:2013年11月22日成绩:top--;if (p->right!=NULL){ /*将右子树根结点入栈*/top++;stack[top]=p->right;level[top][0]=n+width; /*显示场宽增width*/level[top][1]=2;}if (p->left!=NULL){ /*将左子树根结点入栈*/top++;stack[top]=p->left;level[top][0]=n+width; /*显示场宽增width*/level[top][1]=1;}}}}int BTreeDepth(BTree *BT){int leftdep,rightdep;if (BT==NULL)return(0);else{leftdep=BTreeDepth(BT->left);rightdep=BTreeDepth(BT->right);if (leftdep>rightdep)return(leftdep+1);elsereturn(rightdep+1);}}int nodecount(BTree *BT){if (BT==NULL)return(0);elsereturn(nodecount(BT->left)+nodecount(BT->right)+1);}int leafcount(BTree *BT){if (BT==NULL)return(0);else if (BT->left==NULL && BT->right==NULL)return(1);elsereturn(leafcount(BT->left)+leafcount(BT->right));}int notleafcount(BTree *BT){学院:信电学院班级:姓名:学号:课程:计算机软件技术基础实验日期:2013年11月22日成绩:if (BT==NULL)return(0);else if (BT->left==NULL && BT->right==NULL)return(0);elsereturn(notleafcount(BT->left)+notleafcount(BT->right)+1);}int onesoncount(BTree *BT){if (BT==NULL)return(0);else if ((BT->left==NULL && BT->right!=NULL) ||(BT->left!=NULL && BT->right==NULL))return(onesoncount(BT->left)+onesoncount(BT->right)+1);elsereturn(onesoncount(BT->left)+onesoncount(BT->right));}int twosoncount(BTree *BT){if (BT==NULL)return(0);else if (BT->left==NULL || BT->right==NULL)return(twosoncount(BT->left)+twosoncount(BT->right));else if (BT->left!=NULL && BT->right!=NULL)return(twosoncount(BT->left)+twosoncount(BT->right)+1);}void printree(BTree *BT){if (BT!=NULL){printf("%c",BT->data);if (BT->left!=NULL || BT->right!=NULL){printf("(");printree(BT->left);if (BT->right!=NULL)printf(",");printree(BT->right);printf(")");}}}main(){BTree *B;char *s="A(B(D,E(H,I)),C(G))";creatree(&B,s);disptree(B);printf("二叉树括号表示:");printree(B);printf("\n二叉树深度:%d\n",BTreeDepth(B));学院:信电学院班级:姓名:学号:课程:计算机软件技术基础实验日期:2013年11月22日成绩:printf("总结点个数:%d\n",nodecount(B));printf("叶子结点个数:%d\n",leafcount(B));printf("非叶子结点个数:%d\n",notleafcount(B));printf("具有双孩子结点个数:%d\n",twosoncount(B));printf("具有单孩子结点个数:%d\n",onesoncount(B));}/*二叉树遍历*/#include <stdio.h>#include <malloc.h>#define MaxSize 100typedef char ElemType;typedef struct node{ElemType data;struct node *left,*right;} BTree;void creatree(BTree **BT,char *str){BTree *stack[MaxSize],*p;int top=-1,k,j=0;/*top为栈指针,k指定是左还是右孩子,j为str指针*/char ch;*BT=NULL;ch=str[j];while (ch!='\0'){switch(ch){case '(':top++;stack[top]=p;k=1; /*为左结点*/break;case ')':top--;break;case ',':k=2; /*为右结点*/break;default: p=(BTree *)malloc(sizeof(BTree));p->data=ch;p->left=p->right=NULL;if (*BT==NULL) /*根结点*/*BT=p;else{switch(k){case 1:stack[top]->left=p;break;case 2:stack[top]->right=p;}}}j++;ch=str[j];}学院:信电学院班级:姓名:学号:课程:计算机软件技术基础实验日期:2013年11月22日成绩:}void preorder(BTree *BT){if (BT!=NULL){printf("%c",BT->data);preorder(BT->left);preorder(BT->right);}}void inorder(BTree *BT){if (BT!=NULL){inorder(BT->left);printf("%c",BT->data);inorder(BT->right);}}void postorder(BTree *BT){if (BT!=NULL){postorder(BT->left);postorder(BT->right);printf("%c",BT->data);}}main(){BTree *B;char *s="A(B(D,E(H,I)),C(G))";creatree(&B,s);printf("\n先序遍历:");preorder(B);printf("\n中序遍历:");inorder(B);printf("\n后序遍历:");postorder(B);}试验运行结果如图:学院:信电学院班级:姓名:学号:课程:计算机软件技术基础实验日期:2013年11月22日成绩:学院:信电学院班级:姓名:学号:课程:计算机软件技术基础实验日期:2013年11月22日成绩:五、实验心得与体会通过本次上机实验,我掌握了二叉树的建立、显示、节点数目、树深度等操作的程序实现,以及二叉树的先序、中序、后序遍历操作的程序实现,对树与二叉树的遍历,尤其是广度优先遍历和深度优先遍历的理解进一步加深,收获很多啊。

计算机软件基础实验报告

课程名称:计算机软件基础实验项目:1.最简单的C程序2.C程序的选择结构3.C程序的循环结构4.C程序的函数5.C程序的指针6.数据结构初步实验一、最简单的C程序一、实验目的(1)理解常用运算符的意义。

(2)掌握c 语言表达是的运算规则。

二、实际设备及器材计算机三、实验内容(1)整数除的危险性分析三个表达式的值,再设计程序测试,进行比较和分析。

int a=5,b=7,c=100,d,e,f;d=a/b*c;e=a*c/b;f=c/b*a;d=0,e=71,f=70.程序测试:#include<stdio.h>int main(){int a=5,b=7,c=100,d,e,f;d=a/b*c;e=a*c/b;f=c/b*a;printf("% d,% d,%d\n",d,e,f);}结果:(1)分析下面程序是比较x++与++x之间的区别。

例如:#include<stdio.h>int main(){int a=5,b=8;printf("a++=%d\n",a++);printf("a=%d\n",a);printf("++b=%d\n",++b);printf("b=%d\ny",b);}运行结果:由上述程序可以看出,x++是先使用x在使x+1,而++x是先使x+1在使用x。

(2)分析下列表达式的值测试程序:#include<stdio.h>int main(){int a,b,c,d,e,f;scanf("a=%d,b=%d\n",a,b);c=b+a+++a;d=b+(a++)+a;e=b+a+(++a);f=b+a+++a++;printf("c=%,d=%d,e=%d,f=%d\n",c,d,e,f);}四、思考题1.整数除的危险性2.C语言的运算规则实验二、C语言选择结构一、实验目的(1)掌握分支程序的基本结构。

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

学院:信电学院班级:姓名:学号:课程:计算机软件技术基础实验日期:2013年11月22日成绩:实验七SQL 简单查询、连接查询和子查询一、实验目的1.掌握在查询分析器中使用SELECT语句进行简单查询。

2.熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法。

3.熟练掌握数据查询中的分组、统计、计算和组合的操作方法。

4.观察查询结果, 体会SELECT语句实际应用二、实验用软件和工具1.计算机。

实验软件 VC++ 6.02.SQL Server2005软件。

三、实验步骤1 简单查询操作此部分查询包括投影、选择条件表达、数据排序、使用临时表等。

对EDUC(shiyan6)数据库实现以下查询:(1)求信电学院的学生学号和姓名;(2)求选修了课程的学生学号;(3)求选修C1 课程的学生学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同则按学号的升序排列;(4)求选修课程C1 且成绩在80-90 之间的学生学号和成绩,并将成绩乘以系数0.75 输出;(5)求计算机系和数学系的姓张的学生的信息;(6)求缺少了成绩的学生的学号和课程号。

2 连接查询操作对EDUC(shiyan6)数据库实现以下查询:(1)查询每个学生的情况以及他(她)所选修的课程;(2)求学生的学号、姓名、选修的课程名及成绩;(3)求选修C1 课程且成绩在90 分以上的学生学号、姓名及成绩;(4)查询每一门课的间接先行课。

3.子查询操作,在数据库EDUC(shiyan6)中实现查询:学院:信电学院班级:姓名:学号:课程:计算机软件技术基础实验日期:2013年11月22日成绩:(1)求选修了高等数学的学生学号和姓名;(2)求C1 课程的成绩高于张三的学生学号和成绩;(3)求其他系中比计算机系某一学生年龄小的学生信息(即求其它系中年龄小于计算机系年龄最大者的学生);(4)求其他系中比计算机系学生年龄都小的学生信息;(5)求选修了C2 课程的学生姓名;(6)求没有选修C2 课程的学生姓名;(7)查询选修了全部课程的学生的姓名;(8)求至少选修了学号为“S2”的学生所选修的全部课程的学生学号和姓名。

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

学院:信电学院班级:姓名:学号:课程:计算机软件技术基础实验日期:2013年10月25日成绩:实验二栈和队列的基本操作一、实验目的1.掌握栈与队列的数据类型描述及特点;2.掌握栈和队列的存储;3.掌握栈的顺序和链式存储存表示与入栈、出栈操作的程序实现;4. 掌握队列的链式存储表示与入队、出队基本操作算法实现。

二、实验用软件和工具实验软件 VC++ 6.0三、实验步骤1.根据栈数据结构,分别建立一个顺序栈和链式栈并实现其上基本操作(出栈和入栈等),定义一个顺序栈和链栈结构体(队列结构体)。

2.利用入栈功能保存数据。

3.利用出栈删除弹出栈内信息。

4.根据队列数据结构,分别建立链队列和循环队列,并完成其上的基本操作(出入队列等),利用入队功能保存数据。

5.利用出队删除队列信息。

四、实验程序与程序运行结果顺序栈程序:sxz.h#include <iostream>using namespace std;template <class T>class sq_Stack{private:int mm;int top;T *s;public:sq_Stack(int);void prt_sq_Stack();void ins_sq_Stack(T x);T del_sq_Stack();T read_sq_Stack();学院:信电学院班级:姓名:学号:课程:计算机软件技术基础实验日期:2013年10月25日成绩:};template <class T>sq_Stack<T>::sq_Stack(int m){mm=m;s = new T[mm];top=0;return;}template <class T>void sq_Stack<T>::prt_sq_Stack(){int i;cout<<"top="<<top<<endl;for (i=top;i>0;i--) cout<<s[i-1]<<endl;return;}template <class T>void sq_Stack<T>::ins_sq_Stack(T x){if (top==mm){cout<<"overflow!"<<endl; return;}//存储空间已满,上溢错误top=top+1; //s[top-1]=x; //插入新元素return;}template<class T>T sq_Stack<T>::del_sq_Stack(){T y;if(top==0) //空,下溢错误{cout<<"underflow!"<<endl; return(0);}y=s[top-1]; //top=top-1; //长度减1return(y);}template<class T>T sq_Stack<T>::read_sq_Stack(){if(top==0) //空,下溢错误{cout<<"underflow!"<<endl; return(0);}return(s[top-1]);学院:信电学院班级:姓名:学号:课程:计算机软件技术基础实验日期:2013年10月25日成绩:}sxz.cpp#include "sq_Stack.h"int main(){sq_Stack<int> s(10);s.ins_sq_Stack(50);s.ins_sq_Stack(60);s.ins_sq_Stack(70);s.ins_sq_Stack(80);s.ins_sq_Stack(90);s.ins_sq_Stack(100);cout<<"第1次输出栈顶指针与栈中的元素:"<<endl;s.prt_sq_Stack();cout<<"输出栈顶元素:"<<s.read_sq_Stack()<<endl;cout<<"输出退栈的元素:"<<endl;cout<<s.del_sq_Stack()<<endl;cout<<s.del_sq_Stack()<<endl;cout<<s.del_sq_Stack()<<endl;cout<<"再输出栈顶指针与栈中的元素:"<<endl;s.prt_sq_Stack();return 0;}顺序队列程序:sq_Queue.h#include <iostream>using namespace std;template <class T>class sq_Queue{private:int mm;int front;int rear;int s;T *q;public:sq_Queue(int) ;void prt_sq_Queue();void ins_sq_Queue(T x);T del_sq_Queue();};template <class T>sq_Queue<T>::sq_Queue(int m){mm=m;q = new T[mm];front=mm;学院:信电学院班级:姓名:学号:课程:计算机软件技术基础实验日期:2013年10月25日成绩:rear=mm;s=0;return;}template <class T>void sq_Queue<T>::prt_sq_Queue(){int i;cout<<"front="<<front<<endl;cout<<"rear="<<rear<<endl;if ((s==0)&&(rear==front)){cout<<"队列空!"<<endl; return;}i=front;if (front>=mm)front=i%mm ;for (i=front; i<rear;i++){ cout<<q[i]<<endl;}return;}template <class T>void sq_Queue<T>::ins_sq_Queue(T x){if ((s==1)&&(rear==front)){cout<<"Queue_overflow!"<<endl; return;}//存储空间已满,上溢错误rear=rear+1; //if (rear==mm+1)rear=1;q[rear-1]=x; //插入新元素s=1;return;}template <class T>T sq_Queue<T>::del_sq_Queue(){T y;if (s=0){cout<<"Queue_underflow!"<<endl; return(0);}//存储空间已满,上溢错误front=front+1; //if (front==mm+1)front=1;y=q[front-1]; //插入新元素if (rear==front)s=0;return(y);}sq_Queue.cpp学院:信电学院班级:姓名:学号:课程:计算机软件技术基础实验日期:2013年10月25日成绩:#include "sq_Queue.h"int main(){sq_Queue<int> q(10);q.prt_sq_Queue();q.ins_sq_Queue(50);q.ins_sq_Queue(60);q.ins_sq_Queue(70);q.ins_sq_Queue(80);q.ins_sq_Queue(90);q.ins_sq_Queue(100);cout<<"输出队头与队尾指针及队列中的元素:"<<endl;q.prt_sq_Queue();cout<<"输出退队元素:"<<endl;cout<<q.del_sq_Queue()<<endl;cout<<q.del_sq_Queue()<<endl;cout<<q.del_sq_Queue()<<endl;cout<<"再输出队头与队尾指针及队列中的元素:"<<endl;q.prt_sq_Queue();return 0;}链栈:#include <iostream.h>#include <stdio.h>#include <stdlib.h>typedef char DateType;typedef struct node{DateType data;struct node* next;}LinkStack;LinkStack *top;void InitStack(){top=(LinkStack*)malloc(sizeof(LinkStack));top->next=NULL;top->data=0;cout<<"初始化链栈成功!";}void push(DateType x){LinkStack* s;s=(LinkStack*)malloc(sizeof(LinkStack));s->data=x;s->next=top;top=s;cout<<"入栈成功!";}学院:信电学院班级:姓名:学号:课程:计算机软件技术基础实验日期:2013年10月25日成绩:void pop(){LinkStack* s;s=top;if(s->next==NULL){cout<<"栈为空!";}else{top=s->next;free(s);cout<<"出栈成功";}}void readTop(){if(top==NULL){cout<<"栈为空!";}else{cout<<"栈顶元素为:"<<top->data;}}void showStack(){LinkStack* s;s=top;if(s->next==NULL){cout<<"栈为空!";}else{cout<<"链栈元素为:\n";cout<<"\t\t\t";while(s!=NULL){cout<<" "<<s->data;s=s->next;}}}void main(){int i,j;DateType x;while(j)学院:信电学院班级:姓名:学号:课程:计算机软件技术基础实验日期:2013年10月25日成绩:{cout<<"\n\n\n\n";cout<<"****************************************************************"<<endl; cout<<"*** 菜单:***"<<endl;cout<<"*** ①创建链栈②入栈③读栈顶元***"<<endl;cout<<"*** ④出栈⑤显示链栈元素⑥退出***"<<endl;cout<<"****************************************************************"<<endl; cout<<"请选择您所希望的操作:";cin>>i;if(i==1){InitStack();}else if(i==2){if(top==NULL){cout<<"请先初始化链表!";}else{cout<<"请输入要入栈的元素:";cin>>x;push(x);}}else if(i==3){pop();}else if(i==4){readTop();}else if(i==5){showStack();}else if(i==6){j=0;cout<<"程序结束\n";}}}链队列:#include <stdlib.h>#include<iostream.h>#define TRUE 1#define FALSE 0学院:信电学院班级:姓名:学号:课程:计算机软件技术基础实验日期:2013年10月25日成绩:typedef int QElemType;typedef struct LNode{QElemType data;struct LNode *next;}LNode , *LinkList;typedef struct{LinkList front;LinkList rear;}LinkQueue;//链式队列void InitQueue_L(LinkQueue &Q)//引用做参数,Q为结构体{//初始化队列Q.front=Q.rear=new LNode;if(!Q.front) {cout<<"存储分配失败!"<<endl; exit(1);}Q.front->next=NULL;}int IsEmpty(LinkQueue &Q){if(Q.front==Q.rear){return TRUE;}else{return FALSE;}}//创建队列,数据元素由键盘输入void CreateQueue_L(LinkQueue &Q){QElemType temp;LNode *p;cout<<"输入要插入的队列值(输入-1结束)"<<endl;cin>>temp;while(temp != -1){p=new LNode;p->data=temp;p->next=NULL;Q.rear->next=p;学院:信电学院班级:姓名:学号:课程:计算机软件技术基础实验日期:2013年10月25日成绩:Q.rear=p;cin>>temp;}cout<<"创建成功!"<<endl;}//入队操作int EnterQueue(LinkQueue &Q,QElemType x){//将数据元素x插入到队列Q中LNode *NewNode=new LNode;if(!NewNode) {cout<<"存储分配失败!"<<endl; exit(1);}if(NewNode!=NULL){NewNode->data=x;NewNode->next=NULL;Q.rear->next=NewNode;Q.rear=NewNode;cout<<"入队成功!"<<endl<<endl;return(TRUE);}else return(FALSE); //溢出}//出队操作int DeleteQueue(LinkQueue &Q,QElemType &x){//将队列Q的队头元素出队,并存放到x所指的存储空间中LNode *p;/*if(Q.front==Q.rear){cout<<"该队列为空!"<<endl;return(FALSE);}*/p=Q.front->next;x=p->data;Q.front->next=p->next; //队头元素p出队if(Q.rear==p) //如果队中只有一个元素p,则p出队后成为空队Q.rear=Q.front;free(p); //释放存储空间cout<<"出队成功!"<<endl<<endl;return(TRUE);}//队列长度int QueueLength_L(LinkQueue Q){int length=0;if(IsEmpty(Q)) cout<<"该队列为空!"<<endl;else学院:信电学院班级:姓名:学号:课程:计算机软件技术基础实验日期:2013年10月25日成绩:{LNode *p=new LNode;p=Q.front->next;while(p){length++;p=p->next;}}return length;}//输出队列元素void OutputQueue_L(LinkQueue Q){LNode *p=new LNode;if(!p) {cout<<"存储分配失败!"<<endl; exit(1);}if(Q.front==Q.rear) cout<<"该队列为空!"<<endl;else{p=Q.front->next;cout<<endl;cout<<"队列的元素依次为:";while(p){cout<<p->data<<" ";p=p->next;}cout<<endl<<endl;}}QElemType SearchQueue(LinkQueue &Q,int &i){LNode *p=new LNode;if(!p) {cout<<"存储分配失败!"<<endl; exit(1);}//if(Q.front==Q.rear) cout<<"该队列为空!"<<endl;int j=1;p=Q.front->next;while(p&&j<i){j++;p=p->next;}return p->data;}学院:信电学院班级:姓名:学号:课程:计算机软件技术基础实验日期:2013年10月25日成绩://销毁队列void DestroyQueue_L(LinkQueue &Q){while(Q.front){Q.rear=Q.front->next;delete Q.front;Q.front=Q.rear;}}void main(){int flag=1,select;LinkQueue Q;int x;while(flag){cout<<" ☆☆链式队列基本操作☆☆"<<endl;cout<<" ☆1.创建队列☆"<<endl;cout<<" ☆2.判断链队列是否为空☆"<<endl;cout<<" ☆3.队头元素出队☆"<<endl;cout<<" ☆4.新元素入队☆"<<endl;cout<<" ☆5.求队列长度☆"<<endl;cout<<" ☆6.输出队列元素☆"<<endl;cout<<" ☆7.查找第i个位置元素☆"<<endl;cout<<" ☆8.销毁队列☆"<<endl;cout<<" ☆9.其他键退出☆"<<endl;cout<<endl;cout<<"请选择操作:";cin>>select;switch(select){case 1:InitQueue_L(Q);CreateQueue_L(Q);OutputQueue_L(Q);break;case 2:if(IsEmpty(Q)) cout<<"该队列为空!"<<endl;else cout<<"该队列不为空!"<<endl;break;case 3:if(IsEmpty(Q)) {cout<<"队列为空!"<<endl; break;}学院:信电学院班级:姓名:学号:课程:计算机软件技术基础实验日期:2013年10月25日成绩:DeleteQueue(Q,x);OutputQueue_L(Q);break;case 4:if(IsEmpty(Q)) {cout<<"队列还未创建!"<<endl; break;}cout<<"输入要入队的元素x:";cin>>x;EnterQueue(Q,x);OutputQueue_L(Q);break;case 5:if(IsEmpty(Q)) {cout<<"队列还未创建!"<<endl; break;}cout<<"该链队列的长度为:"<<QueueLength_L(Q)<<endl<<endl;break;case 8:if(IsEmpty(Q)) {cout<<"队列还未创建!"<<endl; break;}DestroyQueue_L(Q);cout<<"销毁成功!"<<endl<<endl;break;case 7:cout<<"请输入要查找的位置i:";cin>>x;if(x<1||x>QueueLength_L(Q)) {cout<<"i值不合法!"<<endl; break;}cout<<"该元素为:"<<SearchQueue(Q,x)<<endl<<endl;break;case 6:OutputQueue_L(Q);break;default:flag=0;break;}}}试验运行结果如图:栈:学院:信电学院班级:姓名:学号:课程:计算机软件技术基础实验日期:2013年10月25日成绩:队列:链栈:学院:信电学院班级:姓名:学号:课程:计算机软件技术基础实验日期:2013年10月25日成绩:链队列:学院:信电学院班级:姓名:学号:课程:计算机软件技术基础实验日期:2013年10月25日成绩:五、实验心得与体会通过本次上机实验,我掌握了栈的顺序和链式存储存表示与入栈、出栈操作的程序实现,以及队列的链式存储表示与入队、出队基本操作算法实现。

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

学院:信电学院班级姓名:学号:课程:计算机软件技术基础实验日期:2013年11月24日成绩:实验九建立结构图和程序流程图一、实验目的1、掌握Microsoft visio环境。

2、掌握4种类型的模块;3、掌握建立系统结构图;4、掌握程序流程图的建立。

二、实验用软件和工具1.计算机。

2.VISIO软件。

三、实验步骤1 Microsoft OfficeVisio 环境和使用。

(1)模板:通过打开一个模板来开始创建Microsoft Office Visio图表。

模板在绘图页的左侧打开一个或多个模具。

模具包含创建图表所需的形状。

模板还包括创建特定的图表类型所需的所有样式、设置和工具。

(2)模具和形状:打开模板后,从模具中将形状拖到绘图页上来创建您的图表。

模具上的形状专门用于特定的绘图类型,并且其中的许多形状是“智能”的 - 它们具有感知绘图环境的内置行为。

(3)绘图环境:打开模板后,您将看到 Microsoft Office Visio 绘图环境,它包括菜单、工具栏、包含形状的模具、绘图页和位于绘图页右侧的任务窗格。

您在绘图页上创建绘图,所创学院:信电学院班级姓名:学号:课程:计算机软件技术基础实验日期:2013年11月24日成绩:建的绘图表示打印页面,并包含帮助调整形状位置的网格。

Visio 菜单和工具栏与其他Microsoft Office 系统程序中的菜单和工具栏类似,因此您可以用熟悉的方法打开、打印和保存图表。

(4)开始创建图表:1)打开模板:在“文件”菜单上,指向“新建”,然后单击“选择绘图类型”。

在“选择绘图类型”窗口的“类别”下,单击“软件”。

在“模板”下,单击“数据流模型图”。

2)添加形状:通过将“形状”窗口中模具上的形状拖到绘图页上,可以将形状添加到图表中。

把进程,接口,数据存储和数据流拖动到绘图页上。

3)删除形状:删除形状很容易。

只需单击绘图页上形状,然后按 DELETE 键。

单击图表中的最后一个“进程”形状,然后按 DELETE 键。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《计算机软件技术基础》实验报告专业_____________年级_____________学号_____________学生姓名_____________指导老师_____________南华大学计算机学院编I 实验要求1.每次实验中有若干习题,每个学生至少应该完成其中的两道习题。

2.上机之前应作好充分的准备工作,预先编好程序,经过人工检查无误后,才能上机,以提高上机效率。

3.独立上机输入和调试自己所编的程序,切忌抄袭、拷贝他人程序。

4.上机结束后,应整理出实验报告。

书写实验报告时,重点放在调试过程和小节部分,总结出本次实验中的得与失,以达到巩固课堂学习、提高动手能力的目的。

实验一线性表【实验目的】1.熟悉VC环境,学习如何使用C语言实现线性表的两种存储结构。

2.通过编程、上机调试,进一步理解线性表的基本概念,熟练运用C语言实现线性表基本操作。

3.熟练掌握线性表的综合应用问题。

【实验内容】必做:1.一个线性表有n个元素(n<MAXSIZE, MAXSIZE指线性表的最大长度),且递增有序。

(1)现有一元素x要插入到线性表的适当位置上,并保持线性表原有的顺序不变。

采用链式存储表示方法实现,设计程序实现(2)从单链表中删除指定的元素x,若x在单链表中不存在,给出提示信息。

要求:①指定的值x由键盘输入;②程序能处理空链表的情况。

选做:3.设有头结点的单链表,编程对表中的作一值只保留一个结点,删除其余值相同的结点。

要求:①该算法用函数(非主函数)实现;②在主函数中调用创建链表的函数创建一个单链表,并调用该函数,验证算法的正确性。

4.已知非空单链表第一个结点由head指出,请写一算法,交换p所指结点与其下一个结点在链表中的位置。

要求:①该算法用函数Reverse(head,p)实现,其中head为表头指针,p指向要交换的结点;②在主函数中调用创建链表的函数创建一个单链表,并调用该函数,验证算法的正确性。

要求:①建立一个结点中含有三个域的单链表;②在主函数中调用此算法,构成双向循环链表;③在主函数中利用正向和逆向两种方式输出链表中的数据,验证算法的正确性。

【实验报告】实习时间:实习地点:实习机号:实验二堆栈与队列【实验目的】1.学习如何使用C语言实现堆栈与队列。

2.熟悉堆栈与队列的基本操作及应用。

【实验内容】1.现有一顺序队列,其结构描述为:# define MAX 100typedef struct{ ElemType queue[MaxQueueSize];int front; // 队头指针int count; // 计数器}QueueType;要求:①设计队列的几种几种操作:初始化、进队、出队、取队头元素和判断队列是否非空。

②编写一个主函数进行测试。

2.顺序堆栈实验要求:①设计堆栈的几种几种操作:初始化、入栈、出栈、取栈顶元素和判断堆栈是否非空。

②编写一个主函数进行测试。

【实验报告】实验三队列与栈的应用必做:1、设一个算术表达式中包含圆括号、方括号和花括号三种类型的括号,编写一个算法判断其中的括号是否匹配。

提示:本题使用一个运算符栈st,当遇到的‘(’、‘[’、或‘{’时进栈,当遇到‘}’、‘]’、‘)’时判断栈顶是否为相应的括号,若是退栈继续执行;否则算法结束。

选做:2、假设以数组sequ[0..MaxSize-1]存放环形队列的元素,同时设变量rear和len分别指示环形队列中队尾元素的位置和内含元素的个数。

试写出此环形队列队满的条件,并设计相应入队和出队的算法。

(根据题目填空完善程序)提示:该环形队列对满的条件为:len= =MaxSize,队空的条件为:len= =0。

由rear,len求队列头指针front的过程为:front=rear-len+1;if (front<0) front=front+MaxSize;即front=(rear-len+1+MaxSize)%MaxSize# include <stdio.h># define maxsize 6typedef char queue [maxsize];int rear=0, len=0;int enqueue (queue qu, char x){if (len= =maxsize)return 0;else{rear=(rear+1) %maxsize;qu[rear]=x;len++;return 1;}}int dequeue (queue qu, char *x){int front;if (len= =0)return 0;else{front=(rear-len+1+maxsize) %maxsize;*x=qu[front];len--;return 1;}}void main(){char x;queue qu;printf( “a入队\n”);enqueue (qu, …a‟);printf( “b入队\n”);enqueue (qu, …b‟);printf( “c入队\n”);enqueue (qu, …c‟);printf( “出队一次:”);dequeue (qu, &x);printf( “%c\n”,x);printf( “d入队\n”);enqueue (qu, …d‟);printf( “e入队\n”);enqueue (qu, …e‟);printf( “出队一次:”);dequeue (qu, &x);printf(“%c\n”,x);printf( “f入队\n”);enqueue (qu, …f‟);printf( “g入队\n”);enqueue (qu, …g‟);printf( “出队一次:”);dequeue (qu, &x);printf(“%c\n”,x);printf(“余下元素出列:”);while (len>0){dequeue (qu, &x);printf(“%c\n”,x);}printf(“\n”);}输出:. 入队. 入队出队一次:. 入队. 入队出队一次:. 入队. 入队出队一次:余下元素出列:【实验报告】实习时间:实习地点:实习机号:实验四树一、实验目的1.掌握二叉树,二叉树排序数的概念及存储方法。

2.掌握二叉树的遍历算法。

3.熟练掌握编写实现树的各种运算的算法。

一、实验内容树的基本运算:创建树;输出树;遍历树;求二叉树的深度;创建二叉排序树;二叉排序树的查找;二叉排序树的删除;创造哈夫曼树;输出哈夫曼树;1、建立一棵二叉树并中序遍历。

(填空)#include “ stdio.h”#include “m alloc.h”struct node{char data;struct node *lchild , *rchild;} bnode;typedef struct node * blink;blink add(blink bt,char ch){if(bt==NULL){bt=nalloc(sizeof(bnode));bt->data = ch;bt->lchild = bt->rchild =NULL;}else if ( ch < bt->data)bt->lchild = add(bt->lchild ,ch);elsebt->rchild = add(bt->rchild,ch);return bt;}void inorder(blink bt){if(bt){ inorder(bt->lchild);printf(“%c”,bt->data);inorder(bt->rchild);}}main(){blink root = null;int i,n;char x;scanf(“%c”,&n);for(i=1;i<=n;i++){x=getchar();root=add(root,x);}inorder(root);printf(“\n”);}输入:ephqsbma输出:2、求二叉树的结点数和叶子数(填空)#include “stdio.h”#include “alloc.h”struct node{char data;struct node *lchild , *rchild;} bnode;typedef struct node *blink;int n=0,no=0;void preorder(blink bt){if(bt){ n++;if(bt->lchild ==NULL&&bt->rchild==NULL) no++;preorder(bt->lchild;)preorder(bt->rchild;)}}blink creat(){blink bt;char ch;ch = getchar();if (ch!=‟#‟){bt= nalloc(sizeof(bnode));bt->data= ch;bt->lchild = creat( );bt->rchild= creat( );}elsebt=NULL;return bt;}main(){blink root;root = creat();preorder(root);printf(“number of node:%d number of leaf:%d \n” , n , no);}输入:ab##cd###输出:【实验报告】实习时间:实习地点:实习机号:实验六查找与排序【实验目的】熟悉各种查找与排序的算法,并对各种算法的效率进行比较和测试。

【实验内容】1.排序算法比较。

要求:①调用函数int rand(void)产生100000个待排序的数据;②测试下列各排序函数的机器实际执行时间:a.直接插入排序;b.希尔排序c.选择排序d.冒泡排序e.快速排序f.归并排序【实验报告】实习时间:实习地点:实习机号:实验七综合练习【实验目的】1.在掌握基本概念的基础上,综合运用线性结构和树结构以及排序和查找算法进行复杂结构程序设计。

【实验内容】1.试将一棵普通树转换成二叉树,同时转换而成的二叉树按前序、中序、后序进行遍历,并输出遍历后结点的序列。

例如,下面左图是一棵普通树,用括号表示法表示为:A(BC(FG)DE),右图是转换后的二叉树。

提示:从分析输入的树串形式可知,左括号后面的字符为左括号前面字符的左子树,括号内的字符关系是兄弟,则转化为二叉树后,后面字符为其前一字符的右子树。

所以,依据左右括号及字符间的关系,可以生成结点的左右子树。

相关文档
最新文档