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();	
}
Khai Nguyen Dinh viết 19:04 ngày 30/09/2018

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?

... viết 19:06 ngày 30/09/2018
if(name==root->sv.name_sv)

Kiểu char[] không so sánh kiểu này được.

Bài liên quan
0