danh sách liên kết POs

/* có 7 bước chính khi làm việc với danh sách liên kết 1.khai báo 1 node // node *p; 2.khởi tạo 1 node// p!=NULL 3.khai báo 1 danh sách 4.khởi tạo 1 danh sách 5*.thêm đầu() 6*. thêm cuối() 7.nhập danh sách(sử dụng chức năng thêm cuối hoặc thêm dầu để thêm vào chứ nó không giống mảng nhak ) 8.xuất danh sách <bước 5,6 chọn 1 trong 2 khi nhập nhak> */ #include<iostream>/// thư viện thần thoại using namespace std; #include<string>//còn bên c là string.h nek struct nv { string manhanvien, tennhanvien, tinhtranggiadinh,trinhdovanhoa,ketquacongviec; double socon; double soluongcanban; double songaynghicophep,songaynghikhongphep,songaylamthemtrongthang; }; void Nhap(nv &a)/// nhập có thay đổi danh sách nên có tham chiếu zô nha { cin.ignore();// giống lệnh fflush(stdin);// nhé cout << "\nNhap ma so nhan vien: "; getline(cin, a.manhanvien); cout << "\nNhap vao ten nhan vien: "; getline(cin, a.tennhanvien); cout << "\nTinh trang gia dinh: "; getline(cin, a.tinhtranggiadinh); cout << "\nNhap so luong con trong gia dinh: "; cin >> a.socon; cin.ignore(); cout << "\nTrinh do van hoa:"; getline(cin, a.trinhdovanhoa); cout << "\nLuong can ban : "; cin >> a.soluongcanban; cout << "\nSo ngay nghi co phep: "; cin >> a.songaynghicophep; cout << "\nSo ngay nghi khong phep: "; cin >> a.songaynghikhongphep; cout << "\nSo ngay làm them: "; cin >> a.songaylamthemtrongthang; cin.ignore(); cout << "\nket qua cong viec cua ban la: "; getline(cin, a.ketquacongviec); cout << "enter nhap tiep!"; } void Xuat(nv a)//xuất không có thay đổi j nên ta không cần tham chiếu cho nó bạn nghe { cout << "\n ma so nhan vien: " << a.manhanvien; cout << "\nten nhan vien: " << a.tennhanvien; cout << "\nTinh trang gia dinh: " << a.tinhtranggiadinh; cout << "\nso luong con trong gia dinh: " << a.socon; cout << "\nTrinh do van hoa:" << a.trinhdovanhoa; cout << "\nLuong can ban : " << size_t(a.soluongcanban); cout << "\nSo ngay nghi co phep: " << a.songaynghicophep; cout << "\nSo ngay nghi khong phep: " << a.songaynghikhongphep; cout << "\nSo ngay làm them: " << a.songaylamthemtrongthang; cout << "\nket qua cong viec: " << a.ketquacongviec; } struct node// khai báo 1 node { nv data;// khai báo biến data với kiểu dữ liệu nv xem ở struct đầu bài nghe struct node *pnext;/// khởi tạo con trỏ }; node* getnode(nv x)/// muốn đưa được vào list thì ta phải cho dữ liệu chẳn hạn như biến x vào node và thôi miên //biến x thành node // thì mới thêm vào //list dk nhé //// vì list chỉ thêm khi nó là node bạn nhé { node *p = new node;// khởi tạo và cấp phát con trỏ node bên c++ nhé // bạn có thể dùng malloc bên c cũng được không vấn đề bạn nhé if (p == NULL) // nếu ta không thêm thì không có j nên nó là rỗng nhé { return NULL; } else { p->data = x;/// dữ liệu bằng dữ liệu cần thêm p->pnext = NULL;/// trỏ đến cuối bằng null return p;// trả về node sau khi khởi tạo } } struct list//khai báo danh sách { node *phead; node *ptail; }; void init(list &l)// khởi tạo danh sách nó giống như ta khởi tạo biến a vậy /////////////////// int a;/// khai báo biến a ////////////////// a=9;// khởi tạo a=9 { l.phead = l.ptail = NULL; }//them đầu void addhead(list &l,node *p) { if (l.phead == NULL) { l.phead = l.ptail = p; } else { p->pnext = l.phead; l.phead = p; } } void addtail(list &l, node *p)// thêm cuối { if (l.phead == NULL) { l.phead = l.ptail = p; } else { l.ptail->pnext = p; l.ptail = p; } } void input(list &l,int n) {// trước khi nhập thì bạn phải khởi tạo danhs sách cho nó !(nó đồng nghĩa với việc sau khi khai báo biến a song thì khởi tạo binế a=1 gàá trị thì mới sài được nha) vì nếu 1 node sẵn có thì thêm 1 node vào vị trí đã có thì danh sách sẽ .... bùng :^_^ // đùa thuj ^_^/// nhập không được nữa nhé init(l);// for (int i = 1; i <= n; i++) { nv a;// khai báo biến a kiểu nv định nghĩa ở đầu bài nha Nhap(a);// nhập nó zô node *p = getnode(a);/// đưa a vô node addtail(l, p);/// thêm vào danh sách vì list chỉ thêm khi nó là node nghen } } /// hàm tính lương các bạn biết rùi chứ gì xem và cảm nhận nhak double tinhluong(node *p ) { return p->data.soluongcanban+ ( p->data.socon > 2 ?0.05*p->data.soluongcanban : 0) + (p->data.trinhdovanhoa == "CH" ?0.1*p->data.soluongcanban : 0) + (p->data.songaylamthemtrongthang > 0 ? 0.04*p->data.soluongcanban / p->data.songaylamthemtrongthang : 0) + (p->data.songaynghikhongphep > 0 ?(-0.05)*p->data.soluongcanban / p->data.songaynghikhongphep : 0); } void output(list &l,int n) { int diem = 0; for (node *p = l.phead; p; p = p->pnext)/// { /* vòng for này nó cũng giống như vòng for(int i=0;i<n;i++) */ cout << "\nthong tin nhan vien thu: " <<++diem; Xuat(p->data); cout << "\nTien luong cua nhan vien nay la: "<< rsize_t(tinhluong(p));/// ////////////// giải thích thêm size_t // chức năng nó lấy ra những con số ma thuật khi nó bị ẩn trong máy } } void them(list &l) { node *p = new node; if (l.phead == NULL) { l.phead =l.ptail = p; } else { nv n; cout << "\nNhap thong tin nhan vien muon them vao: "; cout<<"\nenter de nhap thong tin !"; Nhap(n); p = getnode(n); addtail(l, p); } } // ê hàm này đọc và cảm nhận tình cảm của nó nha void xoa(list &l, string ma) { node *j = new node; { for (node *p = l.phead; p; p = p->pnext) { if (p->data.manhanvien == ma) { node *g = j->pnext; j->pnext = g->pnext; delete g; return; } j = p; } } } void tim(list l, node *p) { for (node *k = l.phead; k; k->pnext) { if(k->data.manhanvien == p->data.manhanvien) { cout << "\nThong tin nhan vien duoc tim thay la: "; Xuat(k->data); return;// tìm xong xuất ra nếu không có mình không đảm bảo } } cout << "\nKhong tim thay nhan vien nao xin kiem tra lai !"; return; } void sua(list &l, node *p) { node *j = new node; for (node *k = l.phead; k; k = k->pnext) { if (k->data.manhanvien == p->data.manhanvien) { Nhap(j->data); Xuat(j->data); return; } j = k; } cout << "\nKhong co ma nhan vien nay xin kiem tra lai!"; return; } int main() { list l; int n; cout << "\nNhap so luong nhan vien: "; cin >> n; input(l,n); output(l,n); //// //cout << "\nThem nhan vien: "; //them(l); //output(l, n); nv k; //cout << "\nNhap ma nhan vien ban muon xoa !"; //getline(cin, k.manhanvien); //node *f = getnode(k); //xoa(l, "3"); //cout << "\nDanh sach sau khi xoa la: "; //output(l, n); ///////////// tim nhan vien cout << "\nNhap ma nhan vien ban muon tim !"; getline(cin, k.manhanvien); node *f = getnode(k); tim(l, f); /*nv m; cout << "\nNhap ma so ban muon sua : "; getline(cin, m.manhanvien); node *f = getnode(m); sua(l, f);*/ //output(l, n); system("pause"); return 0; }

Be the first to comment

You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.