没错就是你曦哥我 2019年01月02日
请教大佬如何输入回车结束输入c++
我这段代码是以输入‘0’作为回车结束标志的
我想改成以回车结束
请问一下怎么搞
在线等,急!!
#include "stdio.h"
#include "iostream"
#include <string>
using namespace std;

int i=0;
int n=0;

typedef struct TreeNode
{
int key;
struct TreeNode *left;
struct TreeNode *right;
}treeNode;

class BiSortTree
{

public:
BiSortTree(void);
~BiSortTree();
void displayTree(void);
void insertTree(int key);
void deleteTree(int key);
treeNode* searchTree(int key);

private:
treeNode* buildTree(treeNode* head,int number);
treeNode* search(treeNode* head ,int key);
treeNode* BiSortTree::searchParent(treeNode* head,treeNode* p);
treeNode* BiSortTree::searchMinRight(treeNode* head);
void showTree(treeNode* head);
void destroyTree(treeNode* head);
treeNode *Head;
};

BiSortTree::BiSortTree()
{
cout<<"请输入数据并以0作为结束标志: "<<endl;
Head=NULL;
int number;
cin>>number;
while(number!=0){
Head=buildTree(Head,number);
n++;
cin>>number;
}
}

treeNode* BiSortTree::buildTree(treeNode *head,int number) //head 为父结点
{
treeNode *p;
p=new treeNode;
p->key=number;
p->left=p->right=NULL;

if(head==NULL)
{
i++;
return p;
}
else
{
if(p->key<head->key)
{
head->left=buildTree(head->left,number);
i++;
}
else{
head->right=buildTree(head->right,number);
i++;
}
return head;
}
}



treeNode* BiSortTree::searchTree(int key)
{
return search(Head,key);
}

treeNode* BiSortTree::search(treeNode* head ,int key)
{
if(head==NULL)
return NULL;
if(head->key==key)
return head;
else
{
if(key<head->key )
return search(head->left,key);
else
return search(head->right,key);
}
}

void BiSortTree::deleteTree(int key)
{
treeNode *p;
p=NULL;
p=search(Head,key);
if(p==NULL)
{
cout<<"无"<<key<<endl;
}
else
{
treeNode* parent;
parent=searchParent(Head,p);
if(p->left==NULL&&p->right==NULL)
{
if(parent->left==p)
{
parent->left=NULL;
}
else
{
parent->right=NULL;
}
}
else
{
if(p->right==NULL)
{
if(parent->left==p)
{
parent->left=p->left ;
}
else
{
parent->right=p->left;
}
}
else
{
treeNode *rightMinSon, *secondParent;
rightMinSon=searchMinRight(p->right);
secondParent=searchParent(p->right ,rightMinSon);
secondParent->left=rightMinSon->right;

if(p->right==rightMinSon)
{
p->right=rightMinSon->right ;
}
p->key=rightMinSon->key ;
}
}
cout<<key<<"存在,删除"<<key<<"后";
displayTree();
}
}

treeNode* BiSortTree::searchParent(treeNode* head,treeNode* p)
{
if(head->left==p||head->right==p||head==p||head==NULL)
return head;
else
{
if(p->key<head->key)
return searchParent(head->left,p);
else
return searchParent(head->right,p);
}
}

treeNode* BiSortTree::searchMinRight(treeNode* head)
{
if(head->left ==NULL||head==NULL)
{
return head;
}
else
{
return searchMinRight(head->left);
}
}

void BiSortTree::displayTree(void)
{
cout<<"中序遍历结果为:"<<endl;
showTree(Head);
cout<<endl;
}

void BiSortTree::showTree(treeNode* Head)
{
if(Head!=NULL)
{
showTree(Head->left );
cout<<Head->key<<' ';
showTree(Head->right) ;
}
}

BiSortTree::~BiSortTree()
{
destroyTree(Head);
}

void BiSortTree::destroyTree(treeNode* head)
{

if(head!=NULL)
{
destroyTree(head->left );
destroyTree(head->right );
delete head;
}
}

int main()
{
cout<<"201717030117姚建"<<endl;
cout<<"(1)用二叉链表作存储结构实现二叉排序树。"<<endl;
BiSortTree tree;
int number,set;
tree.displayTree();
cout<<"平均查找长度为:";
cout<<(float)i/n<<endl;
cout<<"请输入要查找的数据x(若x存在,则删除,否则将输出无x):";
cin>>number;
tree.deleteTree(number);
return 0;
}
我这段代码是以输入‘0’作为回车结束标志的
我想改成以回车结束
请问一下怎么搞
在线等,急!!
...全文
浏览 点赞 收藏 回复
写回复
回复

还没有回复,快来抢沙发~

发动态
发帖子
非技术区
创建于2007-09-28

304

社区成员

6021

社区内容

硬件使用 非技术区
社区公告
暂无公告