Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- //cấu trúc NODE
- struct NODE
- {
- int x;
- NODE *pNEXT;
- };
- //cấu trúc LiST
- struct LIST
- {
- NODE *pHead, *pTail;
- };
- //Khởi tạo LIST
- void CreatEmptyList(LIST &list)
- {
- list.pHead = list.pTail = NULL;
- }
- //Kiểm tra LIST vừa khởi tạo
- bool IsEmptyList(LIST list)
- {
- return(list.pHead == NULL && list.pTail == NULL);
- }
- //Thêm 1 node vào đầu danh sách
- void AddHead(LIST &list, NODE *pNew)
- {
- pNew->pNEXT = list.pHead;
- list.pHead = pNew;
- }
- //Tạo 1 node với dữ liệu đưa vào kiểu số nguyên, giá trị x, hàm trả về con trỏ kiểu NODE
- NODE *CreatNode(int x)
- {
- NODE *p;
- p = new NODE;
- if (p == NULL)
- exit(0);
- p->x = x;
- p->pNEXT = NULL;
- return p;
- }
- //Hàm nhập
- void Input(LIST &list)
- {
- NODE *pNew;
- int x;
- CreatEmptyList(list);
- do
- {
- cout << "nhap gia tri nguyen (0 de ket thuc): ";
- cin >> x;
- if (x == 0) break;
- pNew = CreatNode(x);
- AddHead(list, pNew);
- } while (1);
- }
- //Hàm xuất
- void Output(LIST list)
- {
- int x;
- NODE *pNew;
- pNew = list.pHead;
- while (pNew != NULL)
- {
- x = pNew->x;
- cout << x << endl;
- pNew = pNew->pNEXT;
- }
- }
- //Hàm tìm số chẵn dương trong danh sách liên kết. đưa vào 1 danh sách liên kết đơn, và 1 biến để đếm số số chẵn
- //trong danh sách liên kết. hàm trả về trung bình cộng của các số chẵn trong dãy
- float Timchanduong(LIST list, int &dem)
- {
- //Khởi tạo các biến để lưu giá trị
- int x, tong = 0;
- float tb;
- //Tạo con trỏ kiểu Node và trỏ vào đầu danh sách
- NODE *pNEW;
- pNEW = list.pHead;
- //Vòng lặp duyệt từ đầu đến cuối danh sách
- while (pNEW != NULL)
- {
- //x lưu giá trị của phần tử trong danh sách liên kết
- x = pNEW->x;
- //kiểm tra chẵn dương, đúng thì cộng dòn vào biến tổng, và tăng biến đếm
- if(x % 2 == 0 && x>0)
- {
- tong += x;
- dem++;
- }
- //pNew trỏ đến phần tử tiếp theo của danh sách
- pNEW = pNEW->pNEXT;
- }
- //trả về trung bình cộng của các sỗ chẵn dương trong danh sách liên kết
- return float(tong) / dem;
- }
- int main()
- {
- LIST list;
- int dem = 0;
- float tbc;
- Input(list);
- tbc = Timchanduong(list, dem);
- cout << "co " << dem << " so chan duong\ntrungbinh: " << tbc << endl;
- Output(list);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement