北大“数据结构”上机考试复习题总结(2)
数据结构练习题4
1. 编一C程序,它能根据输入的二叉树中序和后序序列来构造该二叉树,并能输出该二叉树的前序序列和该二叉树的度为2的结点的个数并能判断该二叉树是否为二叉排序树(若是输出Yes;否则输出No)。(输入次序是:表示中序序列的字母串、表示后序序列的字母串)。
(注:程序的可执行文件名必须是 e1.exe,存于你的账号或其debug目录下。)
#include <stdio.h
#include <malloc.h
#include <string.h
void exit(int);
#define MAX 100
typedef struct node{
char d;
struct node *lchild,*rchild;
}Tnode;
void MKTree(char in[],int is,int ie,char post[],int posts,int poste,Tnode **r)
{
int i;
if(is<ie||posts<poste)
*r=NULL;
else{
*r=malloc(sizeof(Tnode));
(*r)-d=post[poste];
for(i=is;i<=ie;i++)
if(post[poste]==in[i])
{
MKTree(in,is,i-1,post,posts,posts+i-is-1,&(*r)-lchild);
MKTree(in,i+1,ie,post,posts+i-is,poste-1,&(*r)-rchild);
break;
}
if(iie){
printf(“Error:input contain an error !n”);
exit(9);
}
}
}
void BST(char in[],int is,int ie)
{
int i;
if(is==ie)
printf(“yesn”);
else
{
for(i=is;i<=ie;i++)
{
if(in[i]<in[i+1])
continue;
else
break;
}
if(i==ie)
printf(“YESn”);
else
printf(“NOn”);
}
}
void preorder(Tnode *r)
{
if(r)
{
printf(“%c”,r-d);
preorder(r-lchild);
preorder(r-rchild);
}
}
int seconde(Tnode *r)
{
if(r==NULL)
return 0;
else
if((r-lchild)!=NULL&&(r-rchild)!=NULL)
return 1;
else
return seconde(r-lchild)+seconde(r-rchild);
}
void main()
{
Tnode *r;
char post[MAX],in[MAX];
printf(“input inorder and postorder !n”);
gets(in);
gets(post);
MKTree(in,0,strlen(in)-1,post,0,strlen(post)-1,&r);
printf(“the preorder is as follows:n”);
preorder(r);
printf(“n there are %d seconde in the tree n”,seconde(r));
printf(“if the tree is BST:n”);
BST(in,0,strlen(in)-1);
}
2.编一C程序,它能读入一串整数(以-9999为结束标记),再以与输入次序相反的次序输出这串整数(输入、出时,两个相邻的整数用空格隔开)。
(注:程序的可执行文件名必须是 e2.exe,存于你的账号或其debug目录下。)
#include <stdio.h
#define max 10000
main()
{
int a[max];
int n=0,i,d;
printf(“please enten tne number:n”);
do{
scanf(“%d”,&d);
if(d==-9999)
break;
n++;
a[n]=d;
}while(9);
for(i=n;i0;i——)
printf(“%4d”,a[i]);
printf(“n”);
}
数据结构练习题5
1. 编一C程序,它能读入一个大写英文字母串(字母个数不多于100,字母两两不同),并构造以这些字母为关键字的二叉排序树,再输出该二叉排序树的后序序列和页结点个数。
(注:程序的可执行文件名必须是 e1.exe,存于你的账号或其debug目录下,否则无成绩)
2. 编一C程序,它能读入两组整数(每组整数都以-9999为结束标记,-9999不算在内。个数都不大于1000),并以从小到大的次序输出既在第一组整数中也在第二组整数中的所有整数(同一个整数不能输出两次)。(输入时,两个相邻的整数用空格隔开)。
(注:程序的可执行文件名必须是 e2.exe,存于你的账号或其debug目录下,否则无成绩)
#include <stdio.h
void paixu(int r[],int n)
{
int i,j,k;
int exchange;
for(i=0;i<=n;i++)
{
exchange=0;
for(j=n-1;j=i;j——)
if(r[j+1]<r[j])
{
k=r[j+1];
r[j+1]=r[j];
r[j]=k;
exchange=1;
}
if(!exchange)
break;
}
}
int jiaoji(int m[],int n[],int l[],int countaa,int countbb)
{
int w,x,y;
int i=0,j=0,k=0;
for(w=0;w<=countaa;w++)
{
for(x=w+1;x<=countaa;x++)
{
if(m[w]==m[x])
{
countaa——;
for(y=x;y<=countaa;y++)
{
m[y]=m[y+1];
}
x——;
}
}
}
while(i<=countaa)
{
for(j=0;j<=countbb;j++)
{
if(m[i]==n[i])
{
l[k]=m[i];
k++;
break;
}
}
i++;
}
return k;
}
void main()
{
int a[1000],b[1000],c[2000];
int excange=0,i,countA,countB,countC;
printf(“请输入数组a: n”);
for(i=0;i<=1000;i++)
{
scanf(“%d”,&a[i]);
if(a[i]==-9999)
break;
}
countA=i-1;
paixu(a,countA);
printf(“请输入数组b: n”);
for(i=0;i<=1000;i++)
{
scanf(“%d”,&b[i]);
if(b[i]==-9999)
break;
}
countB=i-1;
paixu(b,countB);
countC=jiaoji(a,b,c,countA,countB);
printf(“nn”);
for(i=0;i<=countC-1;i++)
printf(“%d”,c[i]);
printf(“n”);
【北大“数据结构”上机考试复习题总结(2)】相关文章:
热点推荐:
工学
- 2020-11-17【工学】2012年自考“工程项目管理”单选练习(9)
- 2020-11-17【工学】2012年自考“互联网软件应用与开发”复习资料(1)
- 2020-11-17【工学】2012年自考“互联网软件应用与开发”复习资料(18)
- 2020-11-17【工学】2012年自考“互联网软件应用与开发”复习资料(34)
- 2020-11-17【工学】2012年自考“互联网软件应用与开发”复习资料(35)
- 2020-11-17【工学】2012年自考“互联网软件应用与开发”复习资料(38)
- 2020-11-17【工学】2012年自考“互联网软件应用与开发”复习资料(41)
- 2020-11-17【工学】2012年自考“互联网及其应用”串讲笔记(1)
其他最新资讯
- 2023-12-29【自考政策】广西自考网络助学平台新增61门课程
- 2020-12-04【免考问题】哪些证书可以免考自考相关课程?
- 2020-12-04【免考问题】自考免考有哪些条件?
- 2020-12-04【综合问题】自考本科文凭有用吗?
- 2020-12-04【综合问题】自考本科需要考多少门课?
- 2020-11-17【综合问题】江苏省高等教育自学考试网上报名常见问题及解答
- 2020-11-17【经济学】2012年自考“中国税制”笔记串讲(8)
- 2020-11-17【自考政策】全国自考办领导:未来自考将大力发展网络助学
网友关注
- 【公共课】自考《政治经济学(财经类)》真题练习:具体劳动
- 【公共课】自考《计算机应用基础》真题练习:拨号方式接入的设备
- 【公共课】自考《中国近现代史纲要》真题练习:官僚资本的垄断活动
- 【公共课】自考《大学语文》真题练习:主旨思想
- 【公共课】自考《毛邓三》真题练习:社会主义改革
- 【公共课】自考《政治经济学(财经类)》真题练习:产业资本循环的条件
- 【公共课】自考《计算机应用基础》真题练习:幻灯片文字设置字体操作
- 【公共课】自考《英语(二)》真题练习:副词辨析
网友关注视频
- 沪教版牛津小学英语(深圳用) 六年级下册 Unit 7
- 第19课 我喜欢的鸟_第一课时(二等奖)(人美杨永善版二年级下册)_T644386
- 精品·同步课程 历史 八年级 上册 第15集 近代科学技术与思想文化
- 冀教版小学数学二年级下册第二周第2课时《我们的测量》宝丰街小学庞志荣
- 【部编】人教版语文七年级下册《逢入京使》优质课教学视频+PPT课件+教案,安徽省
- 每天日常投篮练习第一天森哥打卡上脚 Nike PG 2 如何调整运球跳投手感?
- 二年级下册数学第一课
- 外研版英语七年级下册module3 unit2第二课时