已知一个长为12的线性表(dec,feb,nov,oct,jul,sept,aug.apr,may,jun,jan,ma
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/10/06 12:23:00
已知一个长为12的线性表(dec,feb,nov,oct,jul,sept,aug.apr,may,jun,jan,mar).
(1)若每个元素的查找概率相等,则构造二叉排序树后查找不成功的平均查找长度是多少?
(2)若对元素按照字典顺序从小到大排列以后,用折半查找法,则查找其中任意一个元素的平均查找长度ASL是多少?
(1)若每个元素的查找概率相等,则构造二叉排序树后查找不成功的平均查找长度是多少?
(2)若对元素按照字典顺序从小到大排列以后,用折半查找法,则查找其中任意一个元素的平均查找长度ASL是多少?
/*以下是用c++ 实现的二叉排序树的源代码*/
#include<iostream.h>
typedef struct TreeNode
{
int key;
struct TreeNode *left;
struct TreeNode *right;
}treeNode;
class BiSortTree
{
public:
BiSortTree(void);
void desplayTree(void);//显示这个树
void insertTree(int key);//在树中插入一个值
deleteTree(int key);//在树中删除一个值
treeNode* searchTree(int key);//在树中查找一个值
BiSortTree();
private:
treeNode* buildTree(treeNode* head,int number);//建立一个树
treeNode* search(treeNode* head ,int key);//查找
treeNode* BiSortTree::searchParent(treeNode* head,treeNode* p);//查找出p的父亲节点的指针
treeNode* BiSortTree::searchMinRight(treeNode* head);//找到右子树中最小的节点
void showTree(treeNode* head);//显示
void destroyTree(treeNode* head);//删除
treeNode *Head;
};
//
void print()
{
cout<<endl<<endl<<"以下是对二叉排序树的基本操作:"<<endl
<<"1.显示树"<<endl
<<"2.插入一个节点"<<endl
<<"3.寻找一个节点"<<endl
<<"4.删除一个节点"<<endl;
}
void main()
{
BiSortTree tree;
int number;
int choiceNumber;
char flag;
while(1)
{
print() ;
cout<<"请选择你要进行的操作(1~4)"<<endl;
cin>>choiceNumber;
switch(choiceNumber)
{
case 1:
tree.desplayTree();break;
case 2:
cout<<"请插入一个数:"<<endl;
cin>>number;
tree.insertTree(number);
tree.desplayTree();
break;
case 3:
cout<<"请插入你要找数:"<<endl;
cin>>number;
if(tree.searchTree(number)==NULL)
{
cout<<"没有发现"<<endl;
}
else
{
cout<<"发现"<<endl;
}
break;
case 4:
cout<<"请输入你要删除的数:"<<endl;
cin>>number;
tree.deleteTree(number);
tree.desplayTree();
break;
default:break;
}
cout<<"你是否要继续(Y/N)?"<<endl;
cin>>flag;
if(flag=='N'||flag=='n')
break;
}
}
你的串号我已经记下,采纳后我会帮你制作
#include<iostream.h>
typedef struct TreeNode
{
int key;
struct TreeNode *left;
struct TreeNode *right;
}treeNode;
class BiSortTree
{
public:
BiSortTree(void);
void desplayTree(void);//显示这个树
void insertTree(int key);//在树中插入一个值
deleteTree(int key);//在树中删除一个值
treeNode* searchTree(int key);//在树中查找一个值
BiSortTree();
private:
treeNode* buildTree(treeNode* head,int number);//建立一个树
treeNode* search(treeNode* head ,int key);//查找
treeNode* BiSortTree::searchParent(treeNode* head,treeNode* p);//查找出p的父亲节点的指针
treeNode* BiSortTree::searchMinRight(treeNode* head);//找到右子树中最小的节点
void showTree(treeNode* head);//显示
void destroyTree(treeNode* head);//删除
treeNode *Head;
};
//
void print()
{
cout<<endl<<endl<<"以下是对二叉排序树的基本操作:"<<endl
<<"1.显示树"<<endl
<<"2.插入一个节点"<<endl
<<"3.寻找一个节点"<<endl
<<"4.删除一个节点"<<endl;
}
void main()
{
BiSortTree tree;
int number;
int choiceNumber;
char flag;
while(1)
{
print() ;
cout<<"请选择你要进行的操作(1~4)"<<endl;
cin>>choiceNumber;
switch(choiceNumber)
{
case 1:
tree.desplayTree();break;
case 2:
cout<<"请插入一个数:"<<endl;
cin>>number;
tree.insertTree(number);
tree.desplayTree();
break;
case 3:
cout<<"请插入你要找数:"<<endl;
cin>>number;
if(tree.searchTree(number)==NULL)
{
cout<<"没有发现"<<endl;
}
else
{
cout<<"发现"<<endl;
}
break;
case 4:
cout<<"请输入你要删除的数:"<<endl;
cin>>number;
tree.deleteTree(number);
tree.desplayTree();
break;
default:break;
}
cout<<"你是否要继续(Y/N)?"<<endl;
cin>>flag;
if(flag=='N'||flag=='n')
break;
}
}
你的串号我已经记下,采纳后我会帮你制作
给定表(Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,sep,Oct,Nov,Dec),设取散列函数H
已知如下所示长度为12的表 (Jan, Feb, Mar, Apr, May, June, July, Aug, Sep
数据结构学科提问:已知如下所示长度为12的表(Jan,Feb,Mar,Apr,May,June,July,Aug,Sep
char month_name[N]={"Jan","Feb","Mar","Apr","May","Jun","Jul
jan.feb.mar.apr.may.jun的中文含义是什么
Jan,Mar,May,Feb,Apr,Jun分别表示什么
Aug.2nd、Sept.3rd、4th Oct、5th Nov、6th
完整缩写形式Dec. 1st【 】 Oct. 2nd【 】Sept. 3rd【 】 Aug.4th 【 】
月份:一月January Jan.二月February Feb.三月March Mar.四月April Apr.五月Ma
英文十二个月缩写是这样January,Jan Feburary,Feb March,Mar April,Apr May,
六月,七月和九月的英文简写,到底是Jun.Jul.Sep.还是June、Luly和Sept.要有根据
手表上的英文JANI MAR I MAY I JUL I SEP I NOV I 是什么意思?