创建了 #2016级数据结构# 任务:

任务二:关于顺序存储结构作业题
1、向一个长度为n的向量(数组)的第i(0<i<n+2)个元素之前插入一个元素时,需向后移动____个元素。 2、已知一个顺序表按元素值的升序排列,编写一个算法:插入一个元素后保持该顺序表是有序的。 要求:1) 设计顺序表结构 2) 编写算法

创建了 #2016级数据结构# 任务:

任务四:编程题
1. 有n个人围成一圈,顺序排号.从第一个人开始报数,从1到k报数,凡报到k的人退出圈子,问最后留下的是原来的第几号?(注:n,k由键盘输入)。 要求:1)设计顺序表结构,并完成算法 2)设计链表结构,并完成算法。 注意:将可执行代码提交到雪梨

创建了 #2016级数据结构# 任务:

任务一答案
1. 假设n为2的乘幂,并且n>2,试求下列算法的时间复杂度及变量count的值(以n的函数形式表示) int time(int n) { count=0; x=2; while(x<n/2) { ...

创建了 #2016级数据结构# 任务:

任务六:实践作业——动态顺序表ADT实验
请在规定时间内,完成实验Lab2-1。  在编译器中调试通过后,仅需要提交DynaSeqList.cpp文件中的代码。

创建了 #2016级数据结构# 任务:

任务四答案(仅供参考):数组实现(猴子选大王)
#include #include #include #define LISTSIZE 1024 #define INCREMENT 1024 typedef struct...

创建了 #2016级数据结构# 任务:

任务七 第三章作业题
1、写出下列程序段的输出结果(栈的元素类型 ElemType 是 char)。 void main() { Stack S; charx, y; InitStack(&S); x = ‘c’; y = ‘k’; P...

创建了 #2016级数据结构# 任务:

任务九 第三章编程作业(提交可执行代码到雪梨)
1、 设有两个栈S1,S2都采用顺序栈方式,并且共享一个存储区[O..maxsize-1],为了尽量利用空间,减少溢出的可能,可采用栈顶相向,迎面增长的存储方式。试设计S1,S2有关入栈和出栈的操作算法。 2、编程:假设以数组Q[m]存放循环队列中的元素,同时以r...

创建了 #2016级数据结构# 任务:

任务十 链式存储结构编程题
1、编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前。(提示:设计链式存储结构) 2、给定两个用链表表示的整数,每个结点包含一个数位。这些数位是反向存放的,也就是个位排在链表首部。编写函数对这两个整数求和,并用链表形式返回结...

创建了 #2016级数据结构# 任务:

任务十一 第六章书面作业
请写出计算过程 1. 一棵深度为H的满k叉树有如下性质:第H层上的结点都是叶子结点,其余各层上每个结点都有k棵非空子树。如果按层次从1开始对全部结点编号,问: (1) 各层的结点数目是多少? (2) 编号为p 的结点的父结点(若存在)的编号是多少...

创建了 #2016级数据结构# 任务:

任务十三 有关树的编程作业
1、以孩子表示法(孩子链表法)作为一棵树的存储结构,请完成以下算法:     (1)已知某个结点的下标,编写一个算法求这个结点的孩子的数目。     (2)编写一个算法求这棵树的度。 2、以孩子兄弟表示法作为一棵树的存储结构,编写一个算法求这棵树的深度...

创建了 #2016级数据结构# 任务:

任务十五 二叉树的ADT实验
请在规定时间内,完成实验Lab6-1。 在编译器中调试通过后,仅需要提交DynaLnkBiTree.cpp文件中的代码。

创建了 #2016级数据结构# 任务:

任务十六 图的编程作业题(一)
1、试编写一个算法,利用栈的基本操作,在以邻接表方式存储的强连通图中,输出深度优先遍历序列。 2、试写一个算法,在以邻接矩阵方式存储的有向图G中求顶点i到顶点j的不含回路、长度为k的路径数。 4、已知有向图中两个顶点u和v,试编写算法求有向图中从u到v的所有...

创建了 #2016级数据结构# 任务:

任务十九 排序(一)
1、  请给出序列{49,38,65,97,76,13,27,44,90}的直接插入排序过程。 2、  请完成下面一组关键字的希尔排序过程。         初始关键字:49   38    65    97    76    13    27    50 ...

创建了 #2016级数据结构# 任务:

任务一:第一章作业
1. 假设n为2的乘幂,并且n>2,试求下列算法的时间复杂度及变量count的值(以n的函数形式表示)。 int time(int n) {   count=0;   x=2;   while(x&lt...

创建了 #2016级数据结构# 任务:

任务三:关于链表的编程题
1.   简述以下算法的功能 Status  A(Linklist   L) {//L是无表头结点的单链表     if (L&&L->next) {                    Q...

创建了 #2016级数据结构# 任务:

任务十八 图的编程作业题(二)
1、编写一个函数:该函数功能为“求源点v1到汇点v9的关键路径。 2、在图的存储结构中,为每个顶点增加一个MPL域,试写一算法,求有向无环图G的每个顶点出发的最长路径长度,并存入其MPL域。请给出算法的时间复杂度。 3、给定有向图,...

创建了 #2016级数据结构# 任务:

任务九答案(仅供参考)
链接:http://pan.baidu.com/s/1pKBA2gF 密码:o8b7

创建了 #2016级数据结构# 任务:

任务十四 有关哈夫曼的练习题
1、 假设用于通讯的电文字符集及其出现的频率如下表所示。 请为这8个字符设计哈夫曼编码,并画出其哈夫曼树,计算WPL。 2、 假设用于通信的电文仅由8个字母组成,字母在电文中出现的频率分别为0.07,0.19,0.02,0.06,0.32,0.03,...

创建了 #2016级数据结构# 任务:

任务三答案(仅供参考):单链表的求结点个数、单链表逆置、单链表排序
#include #include #define overflow -1 typedef struct LNode { int data; struct LNode *next; }LNode,*Lin...

创建了 #2016级数据结构# 任务:

任务五:关于线性表的编程题(全部选做)
1. 已知线性表中的元素以值递增有序排列。试写一算法,删除表中所有值大于mink且小于maxk的元素,同时释放被删结点空间。(注意:mink和maxk是给定的两个参变量,它们的值可以在表中存在,也可以不存在) 要求:1)设计存储结构; 2)设计算法; ...

创建了 #2016级数据结构# 任务:

任务二十 查找(一)
书面作业: 1.   若对大小均为n的有序的顺序表和无序的顺序表分别进行顺序查找,试在下列三种情况下分别讨论两者在等概率时的平均查找长度是否相同? (1)查找不成功,即表中没有关键字等于给定值K的记录; (2)查找成功,且表中只有一个关键字等于给定值K...

创建了 #2016级数据结构# 任务:

任务四答案(仅供参考):链表实现(猴子选大王)
#include #include typedef struct LNode { int data; struct LNode *next; }LNode,* LinkList; //初始化单链表 int...

创建了 #2016级数据结构# 任务:

任务十二 有关二叉树的编程作业
1. 已知一棵二叉树是以二叉链表的形式存储的,其结点结构说明如下: struct node { int  data; struct node * left; struct node * right; }; ...

创建了 #2016级数据结构# 任务:

任务十七 有关图的练习题(一)
1、试列出下图中全部可能的拓扑有序序列,并指出应用7.5.1节中算法Topological Sort求得的是哪一个序列(注意:应先确定其存储结构)。 2、试利用Dijkstra 算法求题7.11图(上面右图)中从顶点a到其他各顶点间的最短路径,写出...

创建了 #2016级数据结构# 任务:

任务八 第三章作业题续
3、写出以下程序段的输出结果(队列中的数据元素类型 ElemType 为char)。 void main() { Queue Q; InitQueue(&Q); charx = ‘e’, y = ‘c’; EnQueue(...

创建了 #2016级数据结构# 任务:

任务十 第三章实践作业
请在规定时间内,完成实验Lab3-1和lab3-2。  在编译器中调试通过后,仅需要提交DynaSeqStack.cpp和DynaLnkQueue.cpp文件中的代码。

创建了 #2016级数据结构# 任务:

任务二答案
1. 向一个长度为n的向量(数组)的第i(0<i<n+2)个元素之前插入一个元素时,需向后移动__n-i+1__个元素。 2. 已知一个顺序表按元素值的升序排列,编写一个算法:插入一个元素后保持该顺序表是有序的。 要求:1)设计顺序表结构;2...

创建了 #2016级数据结构# 任务:

任务二十一 关于查找和排序的作业
1、    已知一棵二叉排序树上所有关键字中的最小值为-max,最大值为max,又-max<x<max。编写具有如下功能的函数:求该二叉树上小于x且最靠近x的值a和大于x且最靠近x的b。 2、输入50个学生的记录(每个学生的记录包括学号和成绩),组成记...

创建了 #2016级数据结构# 任务:

任务五答案(仅供参考)
task5-1 //已知线性表中的元素以值递增有序排列。试写一算法,删除表中所有值大于mink //且小于maxk的元素,同时释放被删结点空间。(注意:mink和maxk是给定的两个参 //变量,它们的值可以在表中存在,也可以不存在) #include <stdio....

#include <iostream>
#include "Stack.h"
using namespace std;
typedef struct BiNode
{
	int data;
	BiNode *lchild,*rchild;
}BiNode,*BiTree;

//按先序次序输入,构造一个二叉树
bool CreateBiTree(BiTree &T)
{
	int ch;
	cin >> ch;
	if(ch==-1)
		T=NULL;
	else
	{
		T=(BiTree)malloc(sizeof(BiNode));
		if(!T)
			exit(OVERFLOW);
		T->data=ch;
		CreateBiTree(T->lchild);
		CreateBiTree(T->rchild);
	}
	return true;
}

求该二叉树上小于x且最靠近x的值a和大于x且最靠近x的b
bool find(BiTree T,int m,SqStack &S)
{
	static bool isContinue=true;
	if(T&&isContinue)
	{
		if(find(T->lchild,m,S))/		{
			Push(S,T->data);
			if(T->data > m)
			{
				cout << "大于x且最靠近x的b值为" << T->data << endl;
				int a;
				Pop(S,a);
				Pop(S,a);
				cout << "小于x且最靠近x的值a为" << a << endl;
				isContinue=false;//不用再继续递归了
			}
			if(isContinue)
				find(T->rchild,m,S);
		}
	}
	return isContinue;
}
int main(void)
{
	BiTree t;
	CreateBiTree(t);
	SqStack s;
	InitStack(s);
	find(t,60,s);

	return 0;
}