77范文网 - 专业文章范例文档资料分享平台

华师网络学院作业答案-数据结构写作题

来源:网络收集 时间:2018-12-11 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

设计一个递归算法,求二叉树t中度为1的结点数。设二叉链表类型定义如下。 typedef int datatype; //结点的数据类型,假设为int typedef struct NODE *pointer; //结点指针类型 struct NODE { datatype data;

pointer lchild,rchild; };

typedef pointer bitree; //根指针类型 答案:

int sum1(bitree t) { int L,R;

if(t==NULL) return 0; L=sum1(t->lchild); R=sum1(t->rchild);

if((t->lchild==NULL && t->rchild!=NULL) ,, (t->lchild!=NULL && t->rchild==NULL)) return L+R+1; else

return L+R; }

设计递归算法,判断二叉树t中是否所有结点都为正数。 二叉链表的类型定义如下:

typedef int datatype; //结点的数据类型,假设为int typedef struct NODE *pointer; //结点指针类型 struct NODE { datatype data;

pointer lchild,rchild; };

typedef pointer bitree; //根指针类型

答案:

int detect(bitree t) { int L,R;

if(t==NULL) return 1; if(t->data<=0) return 0;

return detect(t->lchild) && detect(t->rchild); }

设计算法将顺序表L中所有的小写字符都移动到表的前端,要求元素的移动次数尽量少。 顺序表类型定义如下:

typedef char datatype; //结点的数据类型,假设为char const int maxsize=100; //最大表长,假设为100

typedef struct {

datatype data[maxsize]; //线性表的存储向量,第一个结点是data[0] int n; //线性表的当前长度 } sqlist; //顺序表类型

答案:

void moves(sqlist *L) { int i,j; datatype x; i=1;j=L->n; while(i< j) {

while((L->data[i]>='a' && L->data[i]<='z') && i< j) i++; while((L->data[j]<'a' ,, L->data[i]>'z') && i< j) j--; if(i< j) {

x=L->data[i];L->data[i]=L->data[j];L->data[j]=x; i++;j--; } } }

设计算法,将顺序表L中所有的负数都移动到表的后端,要求移动次数尽量少。 顺序表类型定义如下:

typedef int datatype; //结点的数据类型,假设为int const int maxsize=100; //最大表长,假设为100 typedef struct {

datatype data[maxsize]; //线性表的存储向量,第一个结点是data[0] int n; //线性表的当前长度 } sqlist; //顺序表类型 答案:

void moves(sqlist *L) { int i,j; datatype x; i=1;j=L->n; while(i< j) {

while(L->data[i]>=0 && i< j) i++;

while(L->data[j]< 0 && i< j) j??; if(i< j) {

x=L->data[i];L->data[i]=L->data[j];L->data[j]=x; i++;j??; } } }

设计算法将顺序表L中所有的正数都删除,要求元素的移动次数尽量少。 顺序表类型定义如下:

typedef int datatype; //结点的数据类型,假设为int const int maxsize=100; //最大表长,假设为100 typedef struct {

datatype data[maxsize]; //线性表的存储向量,第一个结点是data[0] int n; //线性表的当前长度 } sqlist; //顺序表类型

答案:

void dels(sqlist *L) { int s,i; s=0;

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

if(L->data[i]>0) s++;

else if(s>0) L->data[i-s]=l->data[i]; L->n=L->n-s; }

设计算法将顺序表L中所有的数字字符都移动到表的后端,要求元素的移动次数尽量少。 顺序表类型定义如下:

typedef char datatype; //结点的数据类型,假设为char const int maxsize=100; //最大表长,假设为100 typedef struct {

datatype data[maxsize]; //线性表的存储向量,第一个结点是data[0] int n; //线性表的当前长度 } sqlist; //顺序表类型

答案:

void moves(sqlist *L) { int i,j; datatype x; i=1;j=L->n; while(i< j) {

while((L->data[i]<'0' ,, L->data[i]>'9') && i< j) i++; while((L->data[i]>='0' && L->data[i]<='9') && i< j) j--; if(i< j) {

x=L->data[i];L->data[i]=L->data[j];L->data[j]=x; i++;j--; } } }

设计递归算法,判断二叉树t是否满足小根堆的特点。二叉链表的类型定义如下: typedef int datatype; //结点的数据类型,假设为int typedef struct NODE *pointer; //结点指针类型 struct NODE { datatype data;

pointer lchild,rchild; };

typedef pointer bitree; //根指针类型 答案:

int detect(bitree t) {

if(t==NULL) return 1; //空树看成真

if((t->lchild!=NULL && t->lchild->data>t-data) ,, (t->rchild!=NULL && t->rchild->data>t-data)) return 0; //左孩子>根,或右孩子>根,为假 else

return detect(t->rchild) && detect(t->rchild); }

设计算法将顺序表L中所有的负数都移动到表的前端,要求移动次数尽量少。 顺序表类型定义如下:

typedef int datatype; //结点的数据类型,假设为int const int maxsize=100; //最大表长,假设为100 typedef struct {

datatype data[maxsize]; //线性表的存储向量,第一个结点是data[0] int n; //线性表的当前长度 } sqlist; //顺序表类型

答案:

void moves(sqlist *L) { int i,j; datatype x; i=1;j=L->n; while(i< j) {

while(L->data[i]< 0 && i< j) i++; while(L->data[j]>=0 && i< j) j--; if(i< j) {

x=L->data[i];L->data[i]=L->data[j];L->data[j]=x; i++;j--; } } }

设计递归算法,求二叉排序树t的高度。二叉链表的类型定义如下: typedef int datatype; //结点的数据类型,假设为int typedef struct NODE *pointer; //结点指针类型 struct NODE { datatype data;

pointer lchild,rchild; };

typedef pointer bitree; //根指针类型 答案:

int high(bitree t) { int L,R;

if(t==NULL) return 0; L=high(t->lchild); R=high(t->rchild); return L>R?L+1:R+1; }

设计递归算法,求二叉排序树t的叶子数。二叉链表的类型定义如下: typedef int datatype; //结点的数据类型,假设为int typedef struct NODE *pointer; //结点指针类型 struct NODE { datatype data;

pointer lchild,rchild; };

typedef pointer bitree; //根指针类型

答案:

int leaf(bitree t) { int L,R;

if(t==NULL) return 0;

if(t->child==NULL && t->rchild==NULL) return 1; L=leaf(t->lchild); R=leaf(t->rchild); return L+R; }

设计一个递归算法,求二叉树t中度为2的结点数。设二叉链表类型定义如下。 typedef int datatype; //结点的数据类型,假设为int typedef struct NODE *pointer; //结点指针类型 struct NODE { datatype data;

pointer lchild,rchild;

};

typedef pointer bitree; //根指针类型 答案:

int sum2(bitree t) { int L,R;

if(t==NULL) return 0; L=sum1(t->lchild); R=sum1(t->rchild);

if(t->lchild!=NULL && t->rchild!=NULL) return L+R+1; else

return L+R; }

设计算法将顺序表L中所有的负数都删除,要求元素的移动次数尽量少。 顺序表类型定义如下:

typedef int datatype; //结点的数据类型,假设为int const int maxsize=100; //最大表长,假设为100 typedef struct {

datatype data[maxsize]; //线性表的存储向量,第一个结点是data[0] int n; //线性表的当前长度 } sqlist; //顺序表类型 答案:

void dels(sqlist *L) { int s,i; s=0;

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

if(L->data[i]<0) s++;

else if(s>0) L->data[i-s]=L->data[i]; L->n=L->n-s; }

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库华师网络学院作业答案-数据结构写作题在线全文阅读。

华师网络学院作业答案-数据结构写作题.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/360659.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: