Untitled
unknown
plain_text
2 years ago
4.8 kB
12
Indexable
#include <iostream>
#include <string.h>
using namespace std;
struct giaovien {
char maso[32];
char hoten[32];
char namsinh[32];
int sotiet;
int Luong;
};
typedef giaovien ElementType;
struct Node {
ElementType Element;
Node *Next;
};
typedef Node *PtrToNode;
typedef PtrToNode Position;
typedef PtrToNode List;
void Makenull_List(List &L);
int IsEmpty_List(List L);
int IsLast(Position P);
Position Locate(ElementType X, List L);
void Delete_List(ElementType X, List L);
Position FindPrevious(ElementType X, List L);
void Insert_List(ElementType X, Position P, List L);
void Delete_All_List(List );
Position Header(List L);
Position First(List L);
Position Advance(Position P);
ElementType Retrieve(Position P);
void Nhap(ElementType &X);
void Xuat(ElementType X);
void NhapGV(List L);
void XuatGV(List L);
void ds_gv_tangdan(List L);
Position timkiem_giaovien(const char *maso, List L);
// ------------------------------------------------
void Makenull_List(List &L) {
L= new Node;
if(L==NULL) {
cout<<"Khong du bo nho";
return;
}
L->Next = NULL;
}
int IsEmpty_List(List L) {
return L->Next==NULL;
}
int IsLast(List P) {
return P->Next==NULL;
}
Position Locate(ElementType X, List L) {
Position P;
P=L->Next;
while(P!=NULL&&strcmp(P->Element.maso,X.maso)!=0)
P=P->Next;
return P;
}
void Insert_List(ElementType X, Position P, List L) {
Position TmpCell;
TmpCell=new Node;
if(TmpCell==NULL)
cout<<"Out of space!!!";
TmpCell->Element=X;
TmpCell->Next=P->Next;
P->Next=TmpCell;
}
void Delete_List(ElementType X, List L) {
Position P, TmpCell;
P=FindPrevious(X,L);
if(!IsLast(P)) {
TmpCell=P->Next;
P->Next=TmpCell->Next;
delete(TmpCell);
}
}
Position FindPrevious(ElementType X, List L) {
Position P;
P=L;
while(P->Next != NULL && strcmp(P->Next->Element.maso,X.maso)!=0)
P=P->Next;
return P;
}
Position Header(List L) {
return L;
}
Position First(List L) {
return L->Next;
}
Position Advance(Position P) {
return P->Next;
}
ElementType Retrieve(Position P) {
return P->Element;
}
// ------------------------------------------------
void Nhap(ElementType &X) {
fflush(stdin);
cin.clear();
cout<<"Nhap ma so giao vien : ";
cin.getline(X.maso, 32);
fflush(stdin);
cin.clear();
cout<<"Nhap ten giao vien : ";
cin.getline(X.hoten, 32);
fflush(stdin);
cin.clear();
cout<<"Nhap nam sinh giao vien : ";
cin.getline(X.namsinh, 32);
cout<<"Nhap so tiet day : ";
scanf("%d", &X.sotiet);
X.Luong = X.sotiet * 90000;
}
void Xuat(ElementType X) {
cout<<X.maso<<"\t"<<X.hoten<<"\t"<<X.namsinh<<"\t"<<X.sotiet<<"\t"<<X.Luong<<"\t"<<endl;
}
void NhapGV(List L) {
int n;
cout<<"Nhap so luong giao vien : ";
scanf("%d", &n);
ElementType X;
Position P = Header(L);
for(int i = 0; i < n; i++) {
Nhap(X);
Insert_List(X, P, L);
}
}
void XuatGV(List L) {
Position P = First(L);
while(P != NULL) {
Xuat(P->Element);
P = Advance(P);
}
}
void HoanVi(ElementType &X, ElementType &Y) {
ElementType Z = X;
X = Y;
Y = Z;
}
void ds_gv_tangdan(List L) {
Position P = First(L);
while(P != NULL) {
Position Q = Advance(L);
while(Q != NULL) {
if(P->Element.maso < Q->Element.maso) {
HoanVi(P->Element, Q->Element);
}
Q = Advance(Q);
}
P = Advance(P);
}
}
Position timkiem_giaovien(const char *maso, List L) {
Position P = First(L);
while(P != NULL) {
if(strcmp(maso, P->Element.maso) == 0)
return P;
P = Advance(P);
}
return NULL;
}
void intienluong6tr(List L) {
Position P = First(L);
while(P != NULL) {
if(P->Element.Luong > 6000000) {
Xuat(P->Element);
P = Advance(P);
}
}
}
Position timkiem_namsinh_gv(const char *namsinhX, List L) {
Position P = First(L);
while(P != NULL) {
if(strcmp(namsinhX, P->Element.namsinh) == 0)
return P;
P = Advance(P);
}
return NULL;
}
// ---------------------------------------
int main() {
List L;
Makenull_List(L);
NhapGV(L);
XuatGV(L);
ds_gv_tangdan(L);
fflush(stdin);
cin.clear();
char maso_gv[32];
cout<<"Nhap ma so giao vien can tim : ";
cin.getline(maso_gv, 32);
Position K = timkiem_giaovien(maso_gv, L);
if(K != NULL)
Xuat(K->Element);
else
cout<<"Khong tim thay ten mat hang nay."<<endl;
intienluong6tr(L);
fflush(stdin);
cin.clear();
char namsinh[32];
cout<<"Nhap nam sinh giao vien can tim : ";
cin.getline(namsinh, 32);
Position V = timkiem_namsinh_gv(namsinh, L);
if(V != NULL)
Xuat(V->Element);
else
cout<<"Khong tim thay giao vien co nam sinh nay."<<endl;
return 1;
}Editor is loading...