30/09/2018, 16:56
[HỎI] Quản lý sinh viên dùng cây nhị phân và danh sách liên kết
#include<iostream>
using namespace std;
struct sinh_vien{
char name_sv[100];
float point;
};
typedef struct node{
sinh_vien sv;
struct node* left;
struct node *right;
}tree;
tree root;
node *creat_node(sinh_vien x){
node *p=new node;
p->sv=x;
p->left=p->right=NULL;
return p;
}
sinh_vien nhap(sinh_vien x){
cout<<"nhap vao ten sinh vien:"<<endl;
cin.ignore();
cin.getline(x.name_sv,100);
cout<<"nhap vao diem sinh vien:"<<endl;
cin>>x.point;
return x;
}
tree *creat_tree(tree *&root,sinh_vien x){
node *p,*r;
p=creat_node(x);
if(root==NULL){
root=p;
}
else{
r=root;
for(;;){
if(x.point<r->sv.point){
if(r->left){
r=r->left;
}
else{
r->left=p;
return r;
}
}
else{
if(r->right){
r=r->right;
}
else{
r->right=p;
return r;
}
}
}
}
}
void PreOrder(tree *root){
if(root!=NULL){
cout<<root->sv.name_sv;
cout<<root->sv.point;
PreOrder(root->left);
PreOrder(root->right);
}
}
void *search(tree *root,char name[]){
if(root!=NULL){
if(name==root->sv.name_sv){
cout<<"ten: "<<root->sv.name_sv;
cout<<"diem: "<<root->sv.point;
}
search(root->left,name);
search(root->right,name);
}
}
void program(){
sinh_vien x;
tree *root=NULL;
int a,b;
char name[100];
loop: ;
cout<<"moi ban chon chuc nang:"<<endl;
cout<<"1: nhap vao sinh vien:"<<endl;
cout<<"2: hien thi sinh vien:"<<endl;
cout<<"3: tim kiem sinh vien theo ten:"<<endl;
cout<<"4: xoa sinh vien theo diem:"<<endl;
cin>>a;
switch(a){
case 1:{
do{
nhap(x);
creat_tree(root,x);
cout<<"ban co muon tiep tuc nhap?(y:1/n:0)"<<endl;
cin>>b;
}while(b=1);
cout<<"ban co muon tiep tuc?(y:1/n:0)"<<endl;
cin>>b;
if(b==1) goto loop;
else break;
}
case 2:{
PreOrder(root);
cout<<"ban co muon tiep tuc?(y:1/n:0)"<<endl;
cin>>b;
if(b==1) goto loop;
else break;
}
case 3:{
cin.ignore();
cout<<"nhap vao ten can tim:"<<endl;
cin.getline(name,100);
search(root,name);
cout<<"ban co muon tiep tuc?(y:1/n:0)"<<endl;
cin>>b;
if(b==1) goto loop;
else break;
}
}
}
main(){
program();
}
Bài liên quan
chạy nó không hiển thị ra danh sách mà chỉ hiển thị ra địa chỉ thôi.lỗi ở đâu vậy?
Kiểu char[] không so sánh kiểu này được.