数据结构

位置:IT落伍者 >> 数据结构 >> 浏览文章

北京大学数据结构上机考题


发布日期:2021年01月26日
 
北京大学数据结构上机考题

编一C程序它能读入集合A的一串整数(以为结束标记整数个数小于)和集合B 的一串整数(以为结束标记整数个数小于)计算并以从小到大的次序输出AB 的所有元素(为A或B输入时同一个数可能出现多次而A与B的差集中同一个数不能出现多次) (注程序的可执行文件名必须是 eexe)

(注程序的可执行文件名必须是 eexe)

*/

#include

void BubbleSort(int r[]int n)

{//冒泡排序(有小到大)

int ijk;

int exchange;

for(i=;i<=n;i++)

{

exchange=;

for(j=n;j>=i;j)

if(r[j+]

{

k=r[j+];

r[j+]=r[j];

r[j]=k;

exchange=;

}

if(!exchange)

break;

}

}

int DisaSameYs(int r[]int n)

{//消除数组r[]中的重复元素并返回消除后数组剩余的元素个数

int wxy;

for(w=;w<=n;w++)

{

for(x=w+;x<=n;x++)

{

if(r[w]==r[x])

{

n;

for(y=x;y<=n;y++)

{

r[y]=r[y+];

}//endfor

x;

}//endif

}//endfor

}//endfor

return n;

}

int cha(int m[]int n[]int l[]int Countaaint Countbb)

{//求差集

int i=j=k=;

int exch;

while(i<=Countaa)

{

exch=;//交换变量为

for(j=;j<=Countbb;j++)

{//用集合的第一个元素分别和另一个集合的各元素相比较

//然后再用第二个元素(直到最后一个元素)和另一个集合的各元素相比较

if(m[i]==n[j])

{//如果相同交换变量变为

exch=;

break;

}//endif

}//endfor

if(!exch)

{//如果没有相同的就保存m[i]到l[]中

l[k]=m[i];

k++;

}

i++;

}//endwhile

return k;

}

/*

void testds(int r[]int n)

{//测试消除数组中的重复元素的效果用下列循环输出

int z;

for(z=;z<=n;z++)

{

printf(%dr[z]);

}

printf(\n);

}

*/

void main()

{

int a[] b[]c[];

int exchange=;

int ijkCountACountBCountC;

printf(input a\n);

for(i=;i<=;i++)

{

scanf(%d&a[i]);

if(a[i]==)

break;

}

CountA=i;

BubbleSort(aCountA);

CountA=DisaSameYs(aCountA);

// testds(aCountA);

printf(\ninput b\n);

for(i=;i<=;i++)

{

scanf(%d&b[i]);

if(b[i]==)

break;

}

CountB=i;

BubbleSort(bCountB);

CountB=DisaSameYs(bCountB);

//testds(bCountB);

CountC=cha(abcCountACountB);

printf(\n\n);

for(i=;i<=CountC;i++)

{

printf(%d c[i]);

}

printf(\n);

}

//////////////////////////////////////////////////////

//模式匹配

#include

#include

typedef struct{

// int ch[];

char ch[];

int length;

}SeqString;

int NaiveStrMatch(SeqString TSeqString P)

{

int ijk;

int m=Plength;

int n=Tlength;

for(i=;i<=nm;i++)

{

j=;k=i;

while(j

{

k++;j++;

}

if(j==m)

return i;

}//endfor

return ;

}//NaiveStrMatch

SeqString CreatStr(SeqString R)

{

int i;

printf(input data\n);

for(i=;i<;i++)

{

// scanf(%d&Rch[i]);

// if(Rch[i]==)

scanf(%s&Rch[i]);

if(!(strcmp(&Rch[i])))

break;

}

Rlength=i;

return R;

}

void main()

{

int n;

SeqString Str;

Str=CreatStr(Str);

SeqString Str;

Str=CreatStr(Str);

n=NaiveStrMatch(StrStr);

printf(%d\nn);

}

/*

编一C程序它能读入集合A的一串整数(以为结束标记整数个数小于)

和集合B的一串整数(以为结束标记整数个数小于)计算出A与B的交集

并以由小到大的次序输出A与B的交集中的所有整数(输入整数时相邻的两个用空格隔开 为A或B输入时同一个数可能出现多次而A与B的交集中同一个数不能出现多次) (注程序的可执行文件名必须是 eexe)

*/

//注意调试程序时要多输入重复数据调试;本程序是根据青龙提供的程序改编消除了重复数据的错误!;

#include

#include

void BuCountbbleSort(int r[]int n)

{//冒泡排序

int ijk;

int exchange;

for(i=;i<=n;i++)

{

exchange=;

for(j=n;j>=i;j)

if(r[j+]

{

k=r[j+];

r[j+]=r[j];

r[j]=k;

exchange=;

}

if(!exchange)

break;

}

}

int BingJi(int m[]int n[]int l[]int Countaaint Countbb)

{//求集合的并集

int i=j=k=;

while(i<=Countaa&&j<=Countbb)

{

if(m[i]

{//如果 m[i]

l[k]=m[i];

k++;

i++;

}//endif

else if(m[i]>n[j])

{//如果 m[i]>n[j]则取小的值n[j]然后j++;

l[k]=n[j];

k++;

j++;

}//end elseif

else

{//如果 m[i]==n[j]可以任取一个值然后i++;j++;

l[k]=m[i];

k++;

i++;

j++;

}//endelse

}//endwhile

if(i>Countaa)

{//如果i>Countaa即数组m[i]中的元数个数较少

//则把n[j]中的剩余元素都付给l[]

while(j<=Countbb)

{

l[k]=n[j];

j++;

k++;

}//endwhile

}//endif

if(j>Countbb)

{//如果j>Countbb即数组n[i]中的元数个数较少

//则把m[j]中的剩余元素都付给l[]

while(i<=Countaa)

{

l[k]=m[i];

i++;

k++;

}//endwhile

}//endif

return k;//返回生成的数组的元数个数

}//end BuCountbbleSort

int JiaoJi(int m[]int n[]int l[]int Countaaint Countbb)

{//求集合的交集

///////////////////////////////////

//消除数组m[]中的重复元素

int wxy;

for(w=;w<=Countaa;w++)

{

for(x=w+;x<=Countaa;x++)

{

if(m[w]==m[x])

{

Countaa;

for(y=x;y<=Countaa;y++)

{

m[y]=m[y+];

}//endfor

x;

}//endif

}//endfor

}//endfor

/*

//测试消除数组中的重复元素的效果用下列循环输出

int z;

for(z=;z<=Countaa;z++)

{

printf(%dm[z]);

}

printf(\n);

*/

//消除结束

///////////////////////////////////

///////////////////////////////////

//求交集

int i=j=k=;<               

上一篇:数据结构之广度优先遍历

下一篇:计算机应用专业上机考试辅导---数据结构