Cho một danh sách liên kết đơn l, mỗi nút là một số nguyên dương.
a.Tìm phần tử lớn nhất danh sách l.
bTính tổng các phần tử của danh sách l.
c.Đếm xem trong danh sách l có bao nhiêu số nguyên tố ?
d.Đếm xem trong danh sách có bao nhiêu số âm ? bao nhiêu số bằng 0 ? bao
nhiêu số dương ?
e.Đếm xem trong danh sách có bao nhiêu số bằng x ?
f.Tìm phần tử dương nhỏ nhất trong danh sách.
a.Tìm phần tử lớn nhất danh sách l.
bTính tổng các phần tử của danh sách l.
c.Đếm xem trong danh sách l có bao nhiêu số nguyên tố ?
d.Đếm xem trong danh sách có bao nhiêu số âm ? bao nhiêu số bằng 0 ? bao
nhiêu số dương ?
e.Đếm xem trong danh sách có bao nhiêu số bằng x ?
f.Tìm phần tử dương nhỏ nhất trong danh sách.
- Code:
#include "iostream.h"
typedef struct Nut
{
int a;
Nut *tiep;
};
typedef struct DanhSach
{
Nut *dau;
Nut *cuoi;
int n;
};
Nut *LayNut(int x)
{
Nut *p = new Nut;
if(p == NULL)
{
cout<<"Khong du bo nho";
}
p->a = x;
p->tiep = NULL;
return p;
}
void TaoDanhSach(DanhSach &DS)
{
DS.dau = DS.cuoi = NULL;
}
void ThemDau(DanhSach &DS,Nut *x)
{
Nut *p;
if(DS.dau == NULL)
{
DS.dau = DS.cuoi = x;
}
else
{
x->tiep = DS.dau;
DS.dau = x;
}
}
Nut *ChenDau(DanhSach &DS,int x)
{
Nut *p = LayNut(x);
if(p == NULL)
return NULL;
ThemDau(DS,p);
return p;
}
void ThemCuoi(DanhSach &DS,Nut *x)
{
if(DS.dau == NULL)
{
DS.dau = DS.cuoi = x;
}
DS.cuoi = DS.cuoi->tiep = x;
}
void XuatDuLieu(DanhSach DS)
{
Nut *p;
for(p = DS.dau;p != NULL;p = p->tiep)
{
cout<<p->a<<" ";
}
}
int PtuLonNhat(DanhSach &DS)
{
Nut *p;
int max = DS.dau->a;
for(p = DS.dau;p != NULL;p = p->tiep)
{
if(max < p->a)
max = p->a;
}
return max;
}
int TongPtu(DanhSach &DS)
{
Nut *p;
int tong=0;
for(p = DS.dau;p != NULL;p = p->tiep)
{
tong = tong + p->a;
}
return tong;
}
int SoNT(int x)
{
for(int i = 2;i <= x/2;i++)
{
if(x%i == 0) return 0;
}
return 1;
}
int DemSoNT(DanhSach DS)
{
Nut *p;
int d = 0;
for(p = DS.dau;p != NULL;p = p->tiep)
{
if(SoNT(p->a) == 1) d++;
}
return d;
}
int DemSoAm(DanhSach &DS)
{
Nut *p;
int d = 0;
for(p = DS.dau;p != NULL;p = p->tiep)
{
if(p->a < 0) d++;
}
return d;
}
int DemSoBang0(DanhSach DS)
{
Nut *p;
int d = 0;
for(p = DS.dau;p != NULL;p = p->tiep)
{
if(!(p->a)) d++;
}
return d;
}
int DemSoDuong(DanhSach DS)
{
Nut *p;
int d = 0;
for(p = DS.dau;p != NULL;p = p->tiep)
{
if(p->a > 0) d++;
}
return d;
}
int DemSoBangX(DanhSach DS,int x)
{
Nut *p;
int d = 0;
for(p = DS.dau;p != NULL;p = p->tiep)
{
if(p->a == x) d++;
}
return d;
}
int PhanTuDuongNhoNhat(DanhSach DS)
{
Nut *p;
DanhSach A;
TaoDanhSach(A);
int min;
for(p = DS.dau;p != NULL;p = p->tiep)
{
if(p->a > 0)
ChenDau(A,p->a);
}
if(A.dau == NULL) min = -1;
else
{
min = A.dau->a;
for(p = A.dau;p != NULL;p = p->tiep)
{
if(min > p->a)
min = p->a;
}
}
return min;
}
main()
{
DanhSach DS;
int i,n,x,y;
TaoDanhSach(DS);
cout<<"Nhap so phan tu: ";
cin>>n;
for(i=0;i<n;i++)
{
cout<<"x"<<i<<" = ";
cin>>x;
ChenDau(DS,x);
}
XuatDuLieu(DS);
cout<<"\nPhan tu lon nhat: "<<PtuLonNhat(DS)<<endl;
cout<<"Tong cac phan tu: "<<TongPtu(DS)<<endl;
cout<<"Danh Sach co :\n";
cout<<DemSoNT(DS)<<" so nguyen to\n";
cout<<DemSoAm(DS)<<" so am\n"<<DemSoBang0(DS)<<" so 0\n"<<DemSoDuong(DS)<<" so duong\n";
cout<<"Nhap vao x can kiem tra: ";
cin>>y;
cout<<"Danh Sach co "<<DemSoBangX(DS,y)<<" so bang "<<y<<endl;
if(PhanTuDuongNhoNhat(DS) == -1)
cout<<"Khong co phan tu duong nen khong the co min duong!\n";
else
cout<<"Phan tu duong nho nhat "<<PhanTuDuongNhoNhat(DS)<<endl;
}