《数据结构》(C语言版)严蔚敏著 - 数据结构实验指导
更新时间:2023-11-24 02:38:01 阅读量: 教育文库 文档下载
《数据结构》实验指导及报告书
/ 学年 第 学期
姓 名:______________ 学 号:______________ 班 级:______________ 指导教师:______________
数学与统计学院
2011
1
预备实验 C语言的函数数组指针结构体知识
一、实验目的
1、复习C语言中函数、数组、指针、结构体与共用体等的概念。 2、熟悉利用C语言进行程序设计的一般方法。
二、实验预习
说明以下C语言中的概念 1、 函数:
2、 数组:
3、指针:
4、结构体
5、共用体
三、实验内容和要求
1、调试程序:输出100以内所有的素数(用函数实现)。 #include
int isprime(int n){ /*判断一个数是否为素数*/ int m; for(m=2;m*m<=n;m++)
if(n%m==0) return 0; return 1;
}
int main(){ /*输出100以内所有素数*/
int i; printf(\for(i=2;i<100;i++)
if(isprime(i)==1) printf(\return 0;
}
运行结果:
2、 调试程序:对一维数组中的元素进行逆序排列。 #include
2
int a[N]={0,1,2,3,4,5,6,7,8,9},i,temp;
printf(\for(i=0;i temp=a[i]; a[i]=a[N-i-1]; a[N-i-1]=temp; printf(\for(i=0;i return 0; } 运行结果: 3、 调试程序:在二维数组中,若某一位置上的元素在该行中最大,而在该列中最小,则该元素即为该二维数组的一个鞍点。要求从键盘上输入一个二维数组,当鞍点存在时,把鞍点找出来。 #include #define M 3 #define N 4 int main(){ int a[M][N],i,j,k; printf(\请输入二维数组的数据:\\n\ for(i=0;i for(j=0;j for(j=0;j for(i=0;i /*找出第i行的最大值*/ if(a[i][j]>a[i][k]) k=j; for(j=0;j if(a[j][k] /*在第i行找到鞍点*/ break; if(j==M) printf(\ 3 } return 0; } 运行结果: 4、 调试程序:利用指针输出二维数组的元素。 #include int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; int *p; for(p=a[0];p printf(\ return 0; } 运行结果: 5、 调试程序:设有一个教师与学生通用的表格,教师的数据有姓名、年龄、职业、教研室四项,学生有姓名、年龄、专业、班级四项,编程输入人员的数据,再以表格输出。 #include #define N 10 struct student{ char name[8]; /*姓名*/ int age; /*年龄*/ char job; /*职业或专业,用s或t表示学生或教师*/ union { int class; /*班级*/ char office[10]; /*教研室*/ }depa; }stu[N]; int main(){ int i; int n; printf(“\\n请输入人员数(<10):\\n”); scanf(“%d”,&n); for(i=0;i scanf(\if(stu[i].job==’s’) scanf(\ 4 else scanf(\ } printf(“name age job class/office”); for(i=0;i if(stu[i].job==’s’) printf(\ else printf(\ } } 输入的数据:2 Wang 19 s 99061 Li 36 t computer 运行结果: 四、实验小结 五、教师评语 5 int main(){ SqStack ss; printf(\ CreateStack(&ss); printf(\ PrintStack(&ss); return 0; } ? 算法分析:输入元素序列1 2 3 4 5,为什么输出序列为5 4 3 2 1?体现了栈的什么 特性? 2、在第1题的程序中,编写一个十进制转换为二进制的数制转换算法函数(要求利用栈来实现),并验证其正确性。 ? 实现代码 ? 验证 3、阅读并运行程序,并分析程序功能。 #include #define elemtype char typedef struct { elemtype stack[M]; int top; } stacknode; void init(stacknode *st); void push(stacknode *st,elemtype x); void pop(stacknode *st); 16 void init(stacknode *st) { st->top=0; } void push(stacknode *st,elemtype x) { if(st->top==M) printf(\ else { st->top=st->top+1; st->stack[st->top]=x; } } void pop(stacknode *st) { if(st->top>0) st->top--; else printf(“Stack is Empty!\\n”); } int main() { char s[M]; int i; stacknode *sp; printf(\ sp=malloc(sizeof(stacknode)); init(sp); printf(\ gets(s); for(i=0;i if(s[i]=='(') push(sp,s[i]); if(s[i]==')') pop(sp); } if(sp->top==0) printf(\ else printf(\ return 0; } ? ? ? ? ? 输入:2+((c-d)*6-(f-7)*a)/6 运行结果: 输入:a-((c-d)*6-(s/3-x)/2 运行结果: 程序的基本功能: 17 以下为选做实验: 4、设计算法,将一个表达式转换为后缀表达式,并按照后缀表达式进行计算,得出表达式得结果。 ? 实现代码 5、假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾结点(不设队头指针),试编写相应的置空队列、入队列、出队列的算法。 实现代码: 四、实验小结 五、教师评语 18 实验三 串的模式匹配 一、实验目的 1、了解串的基本概念 2、掌握串的模式匹配算法的实现 二、实验预习 说明以下概念 1、模式匹配: 2、BF算法: 3、KMP算法: 三、实验内容和要求 1、阅读并运行下面程序,根据输入写出运行结果。 #include char data[MAXSIZE]; int length; }SqString; int strCompare(SqString *s1,SqString *s2); /*串的比较*/ void show_strCompare(); void strSub(SqString *s,int start,int sublen,SqString *sub); /*求子串*/ void show_subString(); int strCompare(SqString *s1,SqString *s2){ int i; } void show_strCompare(){ SqString s1,s2; int k; printf(\ 19 for(i=0;i return s1->data[i]-s2->data[i]; return s1->length-s2->length; printf(\ gets(s1.data); s1.length=strlen(s1.data); printf(\ gets(s2.data); s2.length=strlen(s2.data); if((k=strCompare(&s1,&s2))==0) printf(\ else if(k<0) printf(\ else printf(\ printf(\} void strSub(SqString *s,int start,int sublen,SqString *sub){ int i; if(start<1||start>s->length||sublen>s->length-start+1){ sub->length=0; } for(i=0;i sub->data[i]=s->data[start+i-1]; sub->length=sublen; } void show_subString(){ SqString s,sub; int start,sublen,i; printf(\ printf(\ gets(s.data); s.length=strlen(s.data); printf(\ scanf(\ printf(\ scanf(\ strSub(&s,start,sublen,&sub); if(sub.length==0) printf(\ else{ printf(\ for(i=0;i printf(\ } printf(\ 20 } int main(){ int n; do { printf(\ printf(\ printf(\ printf(\ printf(\ scanf(\ getchar(); switch(n){ case 1:show_strCompare();break; case 2:show_subString();break; default:n=0;break; } }while(n); return 0; } ? 运行程序 输入: 1 student students 2 Computer Data Stuctures 10 4 运行结果: 2、实现串的模式匹配算法。补充下面程序,实现串的BF和KMP算法。 #include char data[MAXSIZE]; int length; }SqString; int index_bf(SqString *s,SqString *t,int start); 21 void getNext(SqString *t,int next[]); int index_kmp(SqString *s,SqString *t,int start,int next[]); void show_index(); int index_bf(SqString *s,SqString *t,int start){ 补充代码..... } void getNext(SqString *t,int next[]){ int i=0,j=-1; next[0]=-1; while(i if((j==-1)||(t->data[i]==t->data[j])){ i++;j++;next[i]=j; }else j=next[j]; } } int index_kmp(SqString *s,SqString *t,int start,int next[]){ 补充代码..... } void show_index(){ SqString s,t; int k,next[MAXSIZE]={0},i; printf(\ printf(\ 22 gets(s.data); s.length=strlen(s.data); printf(\ gets(t.data); t.length=strlen(t.data); printf(\ scanf(\ printf(\ getNext(&t,next); printf(\ printf(\ for(i=0;i printf(\ printf(\} int main(){ show_index(); return 0; } 输入: abcaabbabcabaacbacba abcabaa 1 运行结果: 四、实验小结 五、教师评语 23 实验四 二叉树 一、实验目的 1、掌握二叉树的基本特性 2、掌握二叉树的先序、中序、后序的递归遍历算法 3、理解二叉树的先序、中序、后序的非递归遍历算法 4、通过求二叉树的深度、叶子结点数和层序遍历等算法,理解二叉树的基本特性 二、实验预习 说明以下概念 1、二叉树: 2、递归遍历: 3、 非递归遍历: 4、层序遍历: 三、实验内容和要求 1、阅读并运行下面程序,根据输入写出运行结果,并画出二叉树的形态。 #include typedef struct BTNode{ /*节点结构声明*/ char data ; /*节点数据*/ struct BTNode *lchild; struct BTNode *rchild ; /*指针*/ }*BiTree; void createBiTree(BiTree *t){ /* 先序遍历创建二叉树*/ char s; BiTree q; printf(\s=getche(); if(s=='#'){*t=NULL; return;} q=(BiTree)malloc(sizeof(struct BTNode)); if(q==NULL){printf(\q->data=s; *t=q; createBiTree(&q->lchild); /*递归建立左子树*/ createBiTree(&q->rchild); /*递归建立右子树*/ 24 } void PreOrder(BiTree p){ /* 先序遍历二叉树*/ if ( p!= NULL ) { printf(\ PreOrder( p->lchild ) ; PreOrder( p->rchild) ; } } void InOrder(BiTree p){ /* 中序遍历二叉树*/ if( p!= NULL ) { InOrder( p->lchild ) ; printf(\ InOrder( p->rchild) ; } } void PostOrder(BiTree p){ /* 后序遍历二叉树*/ if ( p!= NULL ) { PostOrder( p->lchild ) ; PostOrder( p->rchild) ; printf(\ } } void Preorder_n(BiTree p){ /*先序遍历的非递归算法*/ BiTree stack[MAX],q; int top=0,i; for(i=0;i while(q!=NULL){ printf(\ if(q->rchild!=NULL) stack[top++]=q->rchild; if(q->lchild!=NULL) q=q->lchild; else if(top>0) q=stack[--top]; else q=NULL; } } void release(BiTree t){ /*释放二叉树空间*/ if(t!=NULL){ release(t->lchild); release(t->rchild); free(t); 25 for(i=0;i int main() { graph ga; int i,j; createGraph(&ga); printf(\无向图的邻接矩阵:\\n\ for(i=0;i for(j=0;j printf(\ printf(\ } init_visit(); tdfs(&ga); init_visit(); tbfs(&ga); return 0; } ? 根据右图的结构验证实验,输入: ABCDEFGH# 0,1 0,2 0,5 1,3 1,4 2,5 2,6 3,7 4,7 -1,-1 ? 2、阅读并运行下面程序,补充拓扑排序算法。 #include 运行结果: 1 0 B 4 E 7 H A C 2 F 5 G 6 3 D 31 typedef struct edgenode{ /*图的邻接表:邻接链表结点*/ int adjvex; /*顶点序号*/ struct edgenode *next; /*下一个结点的指针*/ }edgenode; typedef struct vnode{ /*图的邻接表:邻接表*/ char data; /*顶点信息*/ int ind; /*顶点入度*/ struct edgenode *link; /*指向邻接链表指针*/ }vnode; void createGraph_list(vnode adjlist[],int *p); /*建立有向图的邻接表*/ void topSort(vnode g[],int n); /*拓扑排序*/ void createGraph_list(vnode adjlist[],int *p){ /*建立有向图的邻接表*/ int i,j,n,e; char v; edgenode *s; i=0;n=0;e=0; printf(\输入顶点序列(以#结束):\\n\ while((v=getchar())!='#') { adjlist[i].data=v; /*读入顶点信息*/ adjlist[i].link=NULL; adjlist[i].ind=0; i++; } n=i; *p=n; /*建立邻接链表*/ printf(\请输入弧的信息(i=-1结束):i,j:\\n\ scanf(\ while(i!=-1){ s=(struct edgenode*)malloc(sizeof(edgenode)); s->adjvex=j; s->next=adjlist[i].link; adjlist[i].link=s; adjlist[j].ind++; /*顶点j的入度加1*/ e++; scanf(\ } printf(\邻接表:\ for(i=0;i printf(\ 32 s=adjlist[i].link; while(s!=NULL){ printf(\ s=s->next; } } } void topSort(vnode g[],int n){ /*拓扑排序*/ } int main(){ vnode adjlist[N]; int n,*p; p=&n; createGraph_list(adjlist,p); return 0; } ? 根据输入,输出有向图的拓扑排序序列。并画出有向图。输入: ABCDEF# 0,1 1,2 2,3 4,1 4,5 -1,-1 ? 运行结果: 33 3、阅读并运行下面程序。 #include #define INF 32766 /*邻接矩阵中的无穷大元素*/ #define INFIN 32767 /*比无穷大元素大的数*/ typedef struct { /*图的邻接矩阵*/ int vexnum,arcnum; char vexs[N]; int arcs[N][N]; } graph; void createGraph_w(graph *g,int flag); void prim(graph *g,int u); void dijkstra(graph g,int v); void showprim(); void showdij(); /*建带权图的邻接矩阵,若flag为1则为无向图,flag为0为有向图*/ void createGraph_w(graph *g,int flag) { int i,j,w; char v; g->vexnum=0; g->arcnum=0; i=0; printf(\输入顶点序列(以#结束):\\n\ while((v=getchar())!='#') { g->vexs[i]=v; /*读入顶点信息*/ i++; } g->vexnum=i; for(i=0;i<6;i++) /*邻接矩阵初始化*/ for(j=0;j<6;j++) g->arcs[i][j]=INF; printf(\输入边的信息:\\n\ scanf(\读入边(i,j,w)*/ while(i!=-1) /*读入i为-1时结束*/ { g->arcs[i][j]=w; 34 if(flag==1) g->arcs[j][i]=w; scanf(\ } } void prim(graph *g,int u)/*出发顶点u*/ { int lowcost[N],closest[N],i,j,k,min; for(i=0;i lowcost[i]=g->arcs[u][i]; closest[i]=u; } lowcost[u]=0; for(i=1;i for(j=0;j min=lowcost[j]; k=j; } printf(\/*输出该边*/ lowcost[k]=0; /*顶点k纳入最小生成树 */ for(j=0;j lowcost[j]=g->arcs[k][j]; closest[j]=k; } } } void printPath(graph g,int startVex,int EndVex) { int stack[N],top=0; /*堆栈*/ int i,k,j; int flag[N]; /*输出路径顶点标志*/ k=EndVex; for (i=0;i 35 printf(\ flag[j]=1; stack[top++]=k; while (top>0) /*找j到k的路径*/ { for (i=0;i if (path[k][i]==1 && flag[i]==0) /*j到k的路径含有i顶点*/ { if (g.arcs[j][i]!=INF ) /*j到i的路径含有中间顶点*/ { printf(\ /*输出j到k的路径的顶点i*/ flag[i]=1; j=i; k=stack[--top]; break; } else { if (i!=k) stack[top++]=i; /*break;*/ } } } } void dijkstra(graph g,int v){ /*dijkstra算法求单源最短路径*/ int path[N][N],dist[N],s[N]; int mindis,i,j,u,k; for(i=0;i for(j=0;j dist[v]=0; s[v]=1; for(i=0,u=1;i for(j=0;j 36 if(s[j]==0) if(dist[j] mindis=dist[j]; } s[u]=1; for(j=0;j if((s[j]==0)&&dist[u]+g.arcs[u][j] printf(\顶点%c->到各顶点的最短路径\\n\ for(i=0;i printf(\顶点%c->顶点%c:\ if(dist[i]==INF||dist[i]==0) printf(\无路径\ else{ printf(\ printf(\经过顶点:\ printPath(g,v,i); /*输出v到i的路径*/ } } } void showprim()/*最小生成树prim算法演示*/ { graph ga; createGraph_w(&ga,1); prim(&ga,0); } void showdij(){ /*dijstra算法演示*/ graph ga; createGraph_w(&ga,0); dijkstra(ga,0); } int main(){ showprim(); /*prim算法演示*/ getchar(); showdij(); /*dijstra算法演示*/ 37 return 0; } ? 下面的输入分别验证prim算法和dijstra算法。输入实例的第一部分为无向图,求 其最小生成树;输入的第二部分为有向图,求其最短路径。 最小生成树 最短路径 ABCDEF# 0,1,6 0,2,1 0,3,5 1,2,5 1,4,3 2,3,5 2,4,6 2,5,4 3,5,2 4,5,6 -1,-1,-1 ? 运行结果:(并画出两个图) 最小生成树 四、实验小结 五、教师评语 ABCDEF# 0,2,10 0,5,100 0,4,30 1,2,5 2,3,50 3,4,20 3,5,10 4,3,20 4,5,60 -1,-1,-1 最短路径 38 实验六 查找 一、实验目的 1、掌握查找表、动态查找表、静态查找表和平均查找长度的概念。 2、掌握线性表中顺序查找和折半查找的方法。 3、学会哈希函数的构造方法,处理冲突的机制以及哈希表的查找。 二、实验预习 说明以下概念 1、顺序查找: 2、折半查找: 3、哈希函数: 4、冲突及处理: 三、实验内容和要求 1. 静态查找表技术 依据顺序查找算法和折半查找算法的特点,对下面的两个查找表选择一个合适的算法,设计出完整的C源程序。并完成问题: 查找表1 : { 8 ,15 ,19 ,26 ,33 ,41 ,47 ,52 ,64 ,90 } ,查找key = 41 查找表2 : {12 ,76 ,29 ,15 ,62 ,35 ,33 ,89 ,48 ,20 } ,查找key =35 查找key=41的算法: 比较次数: 查找key=35的算法: 比较次数: ? 顺序查找算法算法实现代码 39 ? 折半查找算法算法实现代码 2、哈希表的构造与查找 /* 采用开放地址法构造哈希表*/ #include #define OK 1 #define ERROR 0 #define DUPLICATE -1 #define TRUE 1 #define FALSE 0 typedef struct{ /*哈希表元素结构*/ int key; /*关键字值*/ int flag; /*是否存放元素*/ }ElemType; typedef struct { ElemType data[MAXSIZE]; int count; /*元素个数*/ int sizeindex; /*当前哈希表容量*/ }HashTable; int d1[15]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14}; /*线性探测序列*/ int d2[15]={0,1,-1,2*2,-2*2,3*3,-3*3,4*4,-4*4,5*5,-5*5,6*6,-6*6,7*7,-7*7}; /*二次探测序列*/ void dataset(int ds[],int *len); int InsertHash(HashTable *H,int e,int d[]); int CreateHash(HashTable *H,int ds[],int len,int d[]); int SearchHash(HashTable *H, int e,int d[]); 40 void menu(); /*输入查找表*/ void dataset(int ds[],int *len){ int n,m; n=0; printf(\查找表输入:\ while(scanf(\以输入一个非整数作为结束*/ ds[n]=m; n++; } *len=n; } /*计算哈希地址,插入哈希表*/ int InsertHash(HashTable *H,int e,int d[]){ int k,i=1; k=e%P; while(H->data[k].flag==TRUE||k<0){ k=(e%P+d[i])%MAXSIZE;i++; if(i>=15) return ERROR; } H->data[k].key=e; H->data[k].flag=TRUE; H->count++; return OK; } /*构造哈希表*/ int CreateHash(HashTable *H,int ds[],int len,int d[]){ int i; for(i=0;i if(SearchHash(H,ds[i],d)!=-1) return DUPLICATE; InsertHash(H,ds[i],d); if(H->count>=MAXSIZE) return ERROR; } return OK; } /*初始化哈希表*/ void InitHash(HashTable *H){ int i; for(i=0;i H->data[i].flag=FALSE; 41 } } /*在哈希表中查找*/ int SearchHash(HashTable *H, int e,int d[]){ int k,i=1; k=e%P; while(H->data[k].key!=e){ k=(e%P+d[i])%MAXSIZE;i++; if(i>=15) return -1; } return k; } /*演示菜单*/ void menu(){ int choice;int *p; HashTable h; h.count=0;h.sizeindex=MAXSIZE; int a[MAXSIZE]={0}; int i,n,e; dataset(a,&n); /*建立查找表*/ getchar(); printf(\ do{ printf(\哈希查找演示----\\n\ printf(\线性探测构造哈希表\\n\ printf(\二分探测构造哈希表\\n\ printf(\退出\\n\ printf(\输入选择:\ scanf(\ if(choice==1) p=d1; else if(choice==2) p=d2; else return; InitHash(&h); /*初始化哈希表*/ if(!(i=CreateHash(&h,a,n,p))) /*构造哈希表*/ printf(\哈希表构造失败!\\n\ else if(i==DUPLICATE) printf(\哈希表具有重复关键字!\\n\ else{ printf(\哈希表:\\n\ for(i=0;i 42 printf(\ printf(\哈希查找\\n输入要查找的key值:\ getchar(); scanf(\ if((i=SearchHash(&h,e,p))==-1) printf(\未找到\\n\ else printf(\在哈希表中下标为%d\\n\ } getchar(); }while(1); } int main(){ menu(); return 0; } 输入查找表为:19 14 23 1 68 20 84 27 55 11 10 79(注意以输入一个非整数结束)。 运行结果: 1)线性探测散列: 哈希表形态: 84在哈希表中的位置: 2)二次探测散列: 哈希表形态: 84在哈希表中的位置: 四、实验小结 五、教师评语 43 实验七 排序 一、实验目的 1、掌握内部排序的基本算法; 2、分析比较内部排序算法的效率。 二、实验预习 说明以下概念 1、简单排序: 2、希尔排序: 3、快速排序: 4、堆排序: 三、实验内容和要求 1. 运行下面程序: #include int slist[MAX]; /*待排序序列*/ void insertSort(int list[], int n); void createList(int list[], int *n); void printList(int list[], int n); void heapAdjust(int list[], int u, int v); void heapSort(int list[], int n); /*直接插入排序*/ void insertSort(int list[], int n) { int i = 1, j = 0, node = 0, count = 1; printf(\对序列进行直接插入排序:\\n\printf(\初始序列为:\printList(list, n); for(i = 2; i <= n; i++) { node = list[i]; j = i - 1; while(j >= 0 && node < list[j]) 44 } } { list[j+1] = list[j]; --j; } list[j+1] = node; printf(\第%d次排序结果:\printList(list, n); /*堆排序*/ void heapAdjust(int list[], int u, int v) { int i = u, j , temp = list[i]; j = 2 * i; while (j <= v) { } if(j < v && list[j] < list[j+1]) j++; /*若右孩子较大,则把j修改为右孩子的下标*/ if(temp < list[j]) { list[i] = list[j]; /*将list[j]调到父亲的位置上*/ i = j; j = 2 * i; /*修改i和j的值,以便继续向下筛选*/ } else break; /*筛选完成,终止循环*/ list[i] = temp; /*被筛结点的值放入最终位置*/ } void heapSort(int list[], int n) { int i = 0, temp = 0, count = 1; printf(\对序列进行堆排序:\\n\printf(\初始序列为:\printList(list, n); for (i = n / 2; i > 0; i--) heapAdjust(list, i, n); /*建立初始堆*/ printf(\建立的初始堆为:\printList(list, n); for(i = n ; i > 1; i--) {/*循环,完成堆排序*/ temp = list[1]; list[1] = list[i]; list[i] = temp; /*将第一个元素同当前区间内最后一个元素对换*/ 45 } } heapAdjust(list, 1 , i-1); /*筛选出list[1]结点*/ printf(\第%d次排序结果:\printList(list, n); /*生成待排序序列*/ void createList(int list[], int *n) { int i = 1,a; printf(\请输入待排序序列(长度小于50,以输入一个字符结束):\\n\ while(scanf(\ { list[i] = a; i++; } *n=i-1; getchar(); } /*输出排序结果*/ void printList(int list[], int n) { int i = 1; for(; i <= n; i++) { printf(\ if(i % 10 ==0 && i != 0) printf(\ } printf(\} int main() { int choice=1,length; while(choice!=0) { printf(\ printf(\内部排序算法演示程序 *****\\n\printf(\直接插入排序 \\n\printf(\堆排序 \\n\printf(\退出\\n\printf(\请选择:\scanf(\getchar(); 46 switch(choice) { case 1: { createList(slist, &length); insertSort(slist, length); break; } case 2: { } createList(slist, &length); heapSort(slist, length); break; default:choice=0; } printf(\ } return 0; } 输入待排序序列:49 38 65 97 13 27 49(以输入一个字符作为结束) 1)直接插入排序运行结果(写出每一趟的状态): 2)堆排序运行结果(写出每一趟的状态): 2、在1题中补充希尔排序算法。 算法代码: 47 输入待排序序列:49 38 65 97 13 27 49(以输入一个字符作为结束) 运行结果(写出每一趟的状态): 3、在1题中补充快速排序算法。 算法代码: 输入待排序序列:49 38 65 97 13 27 49(以输入一个字符作为结束) 运行结果(写出每一趟的状态): 四、实验小结 请比较各个排序算法的性能。 五、教师评语 48
正在阅读:
《数据结构》(C语言版)严蔚敏著 - 数据结构实验指导11-24
完整住院病历范文05-04
证 件 试 题503-07
630导线放线施工方案 - 图文01-02
南宁市物价局、南宁市财政局、南宁市教育委员会关于调整南宁市幼03-21
中国人民志愿军烈士名单05-06
就业知识竞赛策划书01-07
四年级课外经典阅读卷(二)09-16
煤矿电机车司机学习知识题库12-24
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 数据结构
- 语言
- 指导
- 实验
- 蔚敏著
- 浦东新区2017学年第一学期高三英语期中考试试卷 - 图文
- 地下室外墙操作架技术交底
- 承展大厦厨房空调通风及厨具等设备采购及安装工程招标文件 - 图文
- 渝府发(2011)112号
- 关于提升机关效能优化发展环境的工作意见
- 广东省医院大全
- 数据库系统实验课实验报告 - 图文
- 全国电力职业教育教学指导委员会暨6个专业委员会成员名单
- 《计算机图形学》习题与解答
- 数据流图与功能结构图
- 党政机关秘书应具备的素质与才干
- 基于VISSIM的交叉口交通仿真研究 - 图文
- 山东热力协会名单
- 计算机组成原理复习题及参考答案
- 九天玄女奇门遁甲预测彩票的资料(三)
- T梁吊装专项施工方案
- 大学生寒假社会实践活动调查报告范文
- 路面施工动态管理、留样管理、标准化管理有关要求
- 汽车总装配工艺过程分析
- 热力学第二定律