数据结构上机作业题.pdf

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

数据结构上机实验题:

1.分裂线性表,将线性表L1中奇数存到线性表L2中,偶数存到线性

表L3中

2.编写递归函数,计算二叉树中叶子结点的数目。

3.编写直接插入排序测试程序

4.编程实现顺序检索算法

参考答案:

1.分裂线性表,将L1中奇数存到L2中,偶数存到L3中

#includestdio.h

#defineN100/*预定义最大的数据域空间*/

typedefintdatatype;/*假设数据类型为整型*/

typedefstruct{

datatypedata[N];/*此处假设数据元素只包含一个整型的关键字域*/

intlength;/*线性表长度*/

}seqlist;/*预定义的顺序表类型*/

voidinitseqlist(seqlist*L)//初始化表

{

L-length=0;

}

voidinput(seqlist*L)//输入多个数据创建表

{

datatypex;

initseqlist(L);

while(x)

{

L-data[L-length++]=x;

}

}

voidprint(seqlist*L)

{

inti;

for(i=0;iL-length;i++)

{

}

}

/*分裂线性表,将L1中奇数存到L2中,偶数存到L3中*/

voidsprit(seqlist*L1,seqlist*L2,seqlist*L3)

{

inti,j,k,len;

j=0,k=0;

len=L1-length-1;

for(i=0;i=len;i++)

{if(L1-data[i]%2==0)

L3-data[j++]=L1-data[i];

elseL2-data[k++]=L1-data[i];

}

L2-length=k;L3-length=j;

}

intmain()

{

seqlistL1,L2,L3;

initseqlist(L2);

initseqlist(L3);

input(L1);

sprit(L1,L2,L3);

print(L1);

print(L2);

print(L3);

}

2.编写递归函数算法,计算二叉树中叶子结点的数目。

解:思路:输出叶子结点比较简单,用任何一种遍历递归算法,凡是左右指针均空者,则为

叶子,将其打印出来。

法一:核心部分为:

DLR(liuyu*root)/*中序遍历递归函数*/

{if(root!=NULL)

DLR(root-lchild);

DLR(root-rchild);}

return(0);

}

法二:

intLeafCount_BiTree(BitreeT)//求二叉树中叶子结点的数目

{

if(!T)return0;//空树没有叶子

elseif(!T-lchild!T-rchild)return1;//叶子结点

elsereturnLeaf_Count(T-lchild)+Leaf_Count(T-rchild);//左子树的叶子数加

上右子树的叶子数

}//LeafCount_BiTree

3.直接插入排序测试程序

/*定义table*/

#defineMAXSIZE100/*文件中记录个数的最大值*/

typedefintkeytype;/*定义排序码类型为整数类型*/

typedefstruct{

keytypekey;

intother;/*此处还可以定义记录中除排序码外的其它域*/

}recordtype;/*记录类型的定义*/

typedefstruct{

recordtyper[MAXSIZE+1];

intlength;/*

文档评论(0)

***** + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档