没有合适的资源?快使用搜索试试~ 我知道了~
首页数据结构(c语言)上机实践考试历年试题汇总doc
数据结构(c语言)上机实践考试历年试题汇总doc

亲手打的文档文件,共5道大题9道小题,绝对是自考数据结构实践考试的葵花宝典...本人自己过了之后,留下来,上传分享。
资源详情
资源评论
资源推荐

一:1 .编一 C 程序,它能根据读入的数据构造有向图 G,并输出 G 的邻接矩阵及 G 的拓扑序列。图的输入形式为 i0
j0 i1 j1 i2 j2 ...im jm -1 -1(-1,-1 为有向边输入结束标记,其余的值都>=0 且<n。) n,它们都是整数,n 是有向
图 G 的顶点个数且 40>n>0,顶点名字依次是 V0,V1,V2,…Vn-1; ik jk 表示向图 G 的有向边<Vik,Vjk>。
(注:程序的可执行文件名必须是 e1.exe,存于你的账号或其 debug 目录下。)
2. 编一 C 程序,它能读入两组整数(每组整数都以-9999 为结束标记,个数都不大于 1000),并以从小到大的次序输出
既在第一组整数中也在第二组整数中的所有整数(同一个整数不能输出两次)。(输入时,两个相邻的整数用空格隔开)。
(注:程序的可执行文件名必须是 e2.exe,存于你的账号或其 debug 目录下。)
二:1.编一 C 程序,它能读入两组整数(每组整数都是 66 个整数),它们分别是下三角矩阵 A 和下三角矩阵 B 的按
行优先排列的元素(A 和 B 的其它元素均为零)。计算并输出矩阵 A 与 B 的乘积。
(注:程序的可执行文件名必须是 e1.exe,存于你的账号或其 debug 目录下。)
2.编一 C 程序,它能对输入的一串整数(不多于 1000 个,以-9999 为结束标记)到数组 a 中,再对 a 的元素进行直接插
入排序(从小到大排序),输出排序结果和所用关键字比较次数。(输入时,两个相邻的整数用空格隔开)。
(注:程序的可执行文件名必须是 e2.exe,存于你的账号或其 debug 目录下。)
三:1.编一 C 程序,它能根据输入的二叉树前序和中序序列来构造该二叉树,并能输出该二叉树的后序序列和该二叉树
叶的结点的个数以及该二叉树高度。(输入次序是:表示前序序列的字符串、表示中序序列的字符串)。
(注:程序的可执行文件名必须是 e1.exe,存于你的账号或其 debug 目录下。)
2.编一 C 程序,它能读入一串(n 个)整数(以-9999 为结束标记),并判断第 1 个整数在后(n-1)个整数中出现的次数,
再输出该次数。(输入时,两个相邻的整数用空格隔开)。
(注:程序的可执行文件名必须是 e2.exe,存于你的账号或其 debug 目录下。)
四: 1.编一 C 程序,它能根据输入的二叉树中序和后序序列来构造该二叉树,并能输出该二叉树的前序序列和该二叉
树的度为 2 的结点的个数并能判断该二叉树是否为二叉排序树(若是输出 Yes;否则输出 No)。(输入次序是:表示中
序序列的字母串、表示后序序列的字母串)。
(注:程序的可执行文件名必须是 e1.exe,存于你的账号或其 debug 目录下。)
2.编一 C 程序,它能读入一串整数(以-9999 为结束标记),再以与输入次序相反的次序输出这串整数(输入、出时,
两个相邻的整数用空格隔开)。
(注:程序的可执行文件名必须是 e2.exe,存于你的账号或其 debug 目录下。)
五:
1. 编一 C 程序,它能根据输入数据构造带权无向图 G,并输出 G 的最小生成树。图的输入形式为 n V0 Vi0 w0 V1 Vi1
w1 V2 Vi2 w2 ...Vi Vin wn -1 -1 -1(-1,-1,-1 为输入结束标记,其余的值都>=0 且<n),它们都是整数,且
100>n>0。。
(注:程序的可执行文件名必须是 e1.exe,存于你的账号或其 debug 目录下。)
2. 编一 C 程序,它能根据读入的数据构造有向图 G,并输出 G 的 DFS 遍历序列(从 V0 开始),图的输入形式为 n V0
Vi0 V1 Vi1 V2 Vi2...Vi Vin -1 -1(-1,-1 为输入结束标记,其余的值都>=0 且<n),它们都是整数,且 100>n>0。

(注:程序的可执行文件名必须是 e2.exe,存于你的账号或其 debug 目录下。)
1.1*编一 C 程序,它能根据读入的数据构造有向图 G,并输出 G 的邻接矩阵及 G 的拓扑序列。图的输入形式为 i0
j0 i1 j1 i2 j2 ...im jm -1 -1(-1,-1 为有向边输入结束标记,其余的值都>=0 且<n。) n,它们都是整数,n 是有向
图 G 的顶点个数且 40>n>0,顶点名字依次是 V0,V1,V2,…Vn-1; ik jk 表示
向图 G 的有向边<Vik,Vjk>。
(注:程序的可执行文件名必须是 e1.exe,存于你的账号或其 debug 目录下。)*/
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
void exit(int);
#define MaxVerNum 40
typedef struct{
int arcs[MaxVerNum][MaxVerNum];
int vexnum;
}MGraph;
void Input(MGraph *g)
{
int n,i,j;
printf("请输入顶点个数,顶点个数必须在[1...%d]\n",MaxVerNum);
scanf("%d",&n);
if(n<0||n>MaxVerNum){
printf("顶点的个数必须在[1...%d]\n",MaxVerNum);
exit(-1);
}
g->vexnum=n;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
g->arcs[i][j]=0;
printf("请输入边的顶点 i,j 必须在[0...%d]\n",n-1);
do{
scanf("%d%d",&i,&j);
if(i==-1&&j==-1)
break;
if(i<0||i>=n||j<0||j>=n){
printf("边的顶点 i,j 必须在[0...%d]\n",n-1);
continue;
}
g->arcs[i][j]=1;
}while(9);
}
void juzhen(MGraph *g)
{
int c=0,i,j;
printf("\n 图 G 的邻接矩阵如下:\n");

for(i=0;i<g->vexnum;i++)
for(j=0;j<g->vexnum;j++)
{printf("%d ",g->arcs[i][j]);
if(++c%g->vexnum==0)
printf("\n");
}
}
void cal_in(MGraph *g,int in[])
{
int i,j;
for(i=0;i<g->vexnum;i++)
in[i]=0;
for(i=0;i<g->vexnum;i++)
for(j=0;j<g->vexnum;j++)
if(g->arcs[i][j])
in[j]++;
}
void TopSort(MGraph *g,int in[])
{
int s=-1,c=0,i,j;
printf("\n 图 G 的拓扑排序如下:\n");
for(i=0;i<g->vexnum;i++)
if(in[i]==0){
in[i]=s;
s=i;
}
while(s!=-1){
printf("V%d ",s);
c++;
i=s;
s=in[s];
for(j=0;j<g->vexnum;j++){
if(g->arcs[i][j])
in[j]--;
if(in[j]==0){
in[j]=s;
s=j;
}
}
}
if(c<g->vexnum){
printf("\n 图 G 中包含环路!\n");
}
}
void main()
{
剩余12页未读,继续阅读













安全验证
文档复制为VIP权益,开通VIP直接复制

评论5