华师网络学院作业答案-数据结构写作题
更新时间:2024-01-30 02:32:01 阅读量: 教育文库 文档下载
设计一个递归算法,求二叉树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; }
正在阅读:
华师网络学院作业答案-数据结构写作题01-30
学生个人《现在开讲》观后感优质范本04-21
海子、昌耀的诗歌05-10
羊皮卷第二卷参考资料10-16
教育叙事之微时代大学生思想政治教育话语权的SWOT分析04-03
江苏省扬州市江都区大桥高级中学2021-2022高二英语上学期期中试题(11.8)05-01
发电机及发电机组项目可行性研究报告模板07-12
废水COD组分表征方法体系构建与应用01-20
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 数据结构
- 网络学院
- 作业
- 答案
- 写作
- 华师