请教大佬如何输入回车结束输入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’作为回车结束标志的
我想改成以回车结束
请问一下怎么搞
在线等,急!!