Tìm kiếm

ĐỀ CƯƠNG MÔN CẤU TRÚC DỮ LIỆU NÂNG CAO - Uneti

Nội dung ôn tập (Slide bài giảng đính kèm)+ cấu trúc đề thi
 Nội dung 1: DANH SÁCH MÓC NỐI
    1.1. Danh sách móc nối kép
   1.2. Danh sách móc nối vòng
    1.3. Danh sách nối kép lai nối vòng
 Nội dung 2: CÂY
   2.1. Các khái niệm cơ bản
   2.2. Cây tổng quát
   2.2.1. Biểu diễn cây tổng quát
   2.2.2. Duyệt cây tổng quát
 Nội dung 3: SẮP XẾP
   3.1. Phương pháp sắp xếp phân đoạn
   3.2. Phương pháp sắp xếp hoà nhập
   3.3. Phương pháp sắp xếp vun đống
 Nội dung 4 TÌM KIẾM DỰA VÀO HÀM BĂM
   4.1.Khái niệm
   4.2. Hàm băm
   4.3.Các phương pháp giải quyết đụng độ
  4. 4.Bài tập

Read Users' Comments (1)nhận xét

Time

BT : khai báo cấu trúc biểu diễn thông tin của một thời gian gồm : giờ, phút và giây. Viết chương trình nhập vào 2 thời gian, so sánh 2 thời gian này và in kết quả


code:

#include<iostream.h>
#include<conio.h>
#include<math.h>
// khai bao cau truc gio,phut,giay
struct gio
{
int h;
int p;
int s;
};
// Program dung OOP -- Class
class time
{
private:
 gio t;
public:
 // Ham khoi tao
time()
 {
 this->t.h=0;
 this->t.p=0;
 this->t.s=0;
 }
 // Ham nhap - Nap chong toan tu >>
friend istream &operator>>(istream &nhap,time &a)
 {
  cout<<"\n Nhap gio : ";
  nhap>>a.t.h;
  cout<<"\n Nhap phut : ";
  nhap>>a.t.p;
  cout<<"\n Nhap giay : ";
  nhap>>a.t.s;
  return nhap;
 }
friend ostream &operator<<(ostream &xuat,time a)
{
xuat<<a.t.h<<" : "<<a.t.p<<" : "<<a.t.s<<"''";
return xuat;
}
int operator>(time b)
{
if (t.h!=b.t.h)
 return ((t.h-b.t.h)>0);
  else
  {
if(t.p!=b.t.p)
return ((t.p-b.t.p)>0);
else
return  ((t.s-b.t.s)>0);

  }
}
};

// MAIN - Test by DMTuan-tink4-Uneti- Borland C++
void main()
{
time a,b;
cout<<"\n Nhap Time 1 : ";
cin>>a;
cout<<"\n Nhap Time 2 : ";
cin>>b;
cout<<"\n ---- 2 Time vua nhap -----\n";
cout<<a<<" va "<<b;
if(a>b)
cout<<"\n \n\n Time lon hon la : "<<a;
else
  cout<<"\n Time lon hon la : "<<b;
getch();
}

Read Users' Comments (0)

Toa do


? : 
khai báo cấu trúc biểu diễn thông tin của tọa độ điểm trong mặt phẳng Oxy. Viết chương trình nhập vào tọa độ 2 điểm và tính khoảng cách.

code:


#include<iostream.h>
#include<conio.h>
#include<math.h>
// khai bao cau truc toa do x0y
struct toado
{
int x;// toa do x
int y;// toa do y
};
// Program dung OOP -- Class
class diem
{
private:
 toado td;
public:
 // Ham khoi tao
diem()
 {
 this->td.x=0;
 this->td.y=0;
 }
 // Ham nhap - Nap chong toan tu >>
friend istream &operator>>(istream &nhap,diem &a)
 {
  cout<<"\n Nhap toa do x : ";
  nhap>>a.td.x;
  cout<<"\n Nhap toa do y : ";
  nhap>>a.td.y;
  return nhap;
 }
friend ostream &operator<<(ostream &xuat,diem a)
{
xuat<<" ( "<<a.td.x<<","<<a.td.y<<" )";
return xuat;
}
// Ham tinh khoang cach 2 diem
  float kc(diem b)
{
float s;
s=sqrt(pow(td.x-b.td.x,2)+pow(td.y-b.td.y,2));
return s;
}
};


// MAIN - Test by DMTuan-tink4a2NamDinh-Uneti- Borland C++
void main()
{
diem a,b;
cout<<"\n Nhap toa do diem thu 1 : ";
cin>>a;
cout<<"\n Nhap toa do diem thu 2 : ";
cin>>b;
cout<<"\n ---- 2 toa do vua nhap -----\n";
cout<<a<<" va "<<b;
cout<<"\n\n\n\t-------o0o--KHOANG CACH 2 DIEM--o0o------\n";
float d=a.kc(b);
cout<<"\t \n d = "<<d;
getch();
}

Read Users' Comments (0)

sắp xếp các phần tử chẵn giảm dần

code :



#include<iostream.h>
#include<conio.h>
void nhap(int a[], int n)
{
int i;
for(i=0; i<n; i++) {
cout<<"\nNhap vao a["<< i<<"] : ";
cin>>a[i];
}
}
 // ham sap xep theo pp SelectionSort co the lam theo cac pp # - Heapsort,bubble sort,...
void sx(int a[], int n)
{
int min; //chi so phan tu nho nhat cua day hien hanh
for (int i = 0; i < n-1; i++)
{
 min = i;
 for (int j = i + 1; j < n; j++)
if (a[j] > a[min])
min = j; // xác nhân. vi tri phan tu nho nhât
if (a[min]>a[i])
{
 int temp = a[i];
 a[i] = a[min];
 a[min] = temp;
 }
}
}




void sxchan(int a[], int n)
{


cout<<"\n\t----------KET QUA SAP XEP----------\n";
for(int i=0; i<n; i++)
if(a[i]%2==0)
cout<<a[i]<<" ";


}
void main()
{


int n;
cout<<"Nhap vao so phan tu: ";
cin>>n;
int *a=new int[n+1];// cap phat dong de tiet kiem bo nho
nhap(a, n);
sx(a,n);
sxchan(a, n);
getch();
}

Read Users' Comments (0)

tính tổng các phần tử chia hết cho 5 có trong mảng

Code:



// DMTuan-Tink4a2-Uneti
#include<iostream.h>
#include<conio.h>
void nhap(int a[], int n) {
int i;
for(i=0; i<n; i++) {
cout<<"\nNhap vao a["<< i<<"] : ";
cin>>a[i];
}
}




void tong(int a[], int n)
{
int sum=0;
cout<<"\n\t----------KET QUA----------\n";
for(int i=0; i<n; i++)
{
if(a[i]%5==0)


 sum+=a[i];


}
cout<<"\n  Tong cac so trong mang chia het cho 5 la : "<<sum;;
cout<<endl;
}
void main()
{


int n;
cout<<"Nhap vao so phan tu: ";
cin>>n;
int *a=new int[n+1];// cap phat dong de tiet kiem bo nho
nhap(a, n);
tong(a, n);
getch();
}

Read Users' Comments (1)nhận xét

đếm các phần tử là số hoàn thiện trong mảng.

Code:



// DMTuan-Tink4a2-Uneti
#include<iostream.h>
#include<conio.h>
#include<math.h>
void nhap(int a[], int n) {
int i;
for(i=0; i<n; i++) {
cout<<"\nNhap vao a["<< i<<"] : ";
cin>>a[i];
}
}


int kthc(int n)
{
int s=0;
for (int i=1;i<=n/2;i++)
 {
 if(n%i==0)
  s=s+i;
 }
if (s==n)
  return 1;
else
 return 0;
}
void check(int a[], int n)
{
int dem=0;
cout<<"Cac phan tu la so hoan chinh :\n";
for(int i=0; i<n; i++)
{
if(kthc(a[i]))


cout<< a[i]<<" ";




}
dem++;
cout<<"\n Co "<<dem<<" so hoan chinh trong mang !";
cout<<endl;
}
void main()
{


int n;
cout<<"Nhap vao so phan tu: ";
cin>>n;
int *a=new int[n+1];// cap phat dong de tiet kiem bo nho
nhap(a, n);
check(a, n);
getch();
}

Read Users' Comments (0)

Mang

bai tap : viết chương trình nhập vào một dãy số a gồm n số thực (n<100), nhập vào dãy số      b gồm m số thực (m<=100).
-in ra những phần tử xuất hiện ở cả 2 dãy

Code:

// DMTuan-Tink4a2-Uneti
#include<iostream.h>
#include<conio.h>
void nhapa(int a[], int n)
{
int i;
for(i=0; i<n; i++) {
cout<<"\nNhap vao a["<< i<<"] : ";
cin>>a[i];
}
}
 void nhapb(int b[], int n)
 {
int j;
for(j=0; j<n; j++)
{
cout<<"\nNhap vao b["<< j<<"] : ";
cin>>b[j];
}
}
void check(int a[], int b[],int n,int m)
{
cout<<"\n\t-------------KET QUA------------";
cout<<"\n ----------o0o---CAC PHAN TU O 2 MANG---o0o-----------\n";
for (int i=0;i<=n;i++)
 for (int j=0;j<=m;j++)
if (a[i]==b[j])
 cout<<a[i]<<" ";
}
void main()
{

int n,m;
cout<<"Nhap vao so phan tu mang a[] : ";
cin>>n;
int *a=new int[n+1];// cap phat dong de tiet kiem bo nho
cout<<"Nhap vao so phan tu mang b[] : ";
cin>>m;
int *b=new int[n+1];
cout<<"\n --------NHAP MANG A[]-------";
nhapa(a, n);
cout<<"\n --------NHAP MANG B[]-------";
nhapb(b,n);
check(a,b, n,m);
getch();
}

Read Users' Comments (0)

in các phần tử âm lớn nhất trong mảng

Code:



// DMTuan-Tink4a2-Uneti
#include<iostream.h>
#include<conio.h>
#include<math.h>
void nhap(int a[], int n) {
int i;
for(i=0; i<n; i++) {
cout<<"\nNhap vao a["<< i<<"] : ";
cin>>a[i];
}
}
// Ham tim phan tu am max
void ammax(int a[], int n)
{
int max=-32767;
for (int i=0;i<n;i++)
 if (a[i]<0 && a[i]>max)
  max=a[i];
  cout<<"\n GIA TRI AM MAX LA : ";
 cout<<max;
}


void main()
{


int n;
cout<<"Nhap vao so phan tu: ";
cin>>n;
int *a=new int[n+1];// cap phat dong de tiet kiem bo nho
nhap(a, n);
ammax(a, n);
getch();
}

Read Users' Comments (0)

tìm vị trí phần tử âm lớn nhất trong mảng.

Code:



// DMTuan-Tink4a2-Uneti
#include<iostream.h>
#include<conio.h>
#include<math.h>
void nhap(int a[], int n) {
int i;
for(i=1; i<=n; i++) {
cout<<"\nNhap vao a["<< i<<"] : ";
cin>>a[i];
}
}
// Ham tim vi tri am max  neu khong co tra ve value=-1
int ammax(int a[], int n)
  {
 int pos = -1;
 for (int i=1; i<=n; i++)
 {
 if(a[i]<0)
 {
 pos = i;
 break;
 }
 }
 for (i=i+1; i<=n; i++)
 {
  if((a[i]<0)&&(a[pos]<a[i]))
 {
pos = i;
 }
 }
 return pos;
  }


void main()
{


int n;
cout<<"Nhap vao so phan tu: ";
cin>>n;
int *a=new int[n+1];// cap phat dong de tiet kiem bo nho
nhap(a, n);
cout<<"\n VI TRI CO GIA TRI AM MAX LA : ";
cout<<ammax(a, n);
getch();
}

Read Users' Comments (1)nhận xét

viết chương trình nhập vào mảng một chiều các số nguyên va xuất ra màn hình các phàn tử là số chính phương nằm tại những vị trí lẻ trong mảng.

Code :



//DMTuan-Tink4a2-Uneti
#include<iostream.h>
#include<conio.h>
#include<math.h>
int cp(int n)


{
 if (n==int(sqrt(n))*int(sqrt(n)))
 return 1;
 else
 return 0;
}


void nhap(int a[], int n) {
int i;
for(i=1; i<n; i++) {
cout<<"\nNhap vao a["<< i<<"] : ";
cin>>a[i];
}
}


void check(int a[], int n)
{


cout<<"Cac phan tu la so chinh phuong o vi tri le la :\n";
for(int i=1; i<n; i++)
{
if(cp(a[i])&&i%2!=0)
cout<< a[i]<<" ";
}
cout<<endl;
}
void main()
{


int n;
cout<<"Nhap vao so phan tu: ";
cin>>n;
int *a=new int[n+1];
nhap(a, n);
check(a, n);
getch();
}

Read Users' Comments (0)

viết chương trình nhập vào mảng một chiều các số nguyên va xuất ra màn hình các phàn tử là số nguyên tố.

Code :




// DMTuan-Tink4a2-Uneti
#include<iostream.h>
#include<conio.h>
#include<math.h>
void nhap(int a[], int n) {
int i;
for(i=0; i<n; i++) {
cout<<"\nNhap vao a["<< i<<"] : ";
cin>>a[i];
}
}


int nguyento(int n)
{
if(n<2) return 0;
if(n==2) return 1;
int i=2;
while ((i<=(int)sqrt(n)) && (n%i!=0))
 i++;
if(n%i!=0)
 return 1;
else
 return 0;
}
void kTNT(int a[], int n)
{


cout<<"Cac phan tu la so nguyen to:\n";
for(int i=0; i<n; i++)
{
if(nguyento(a[i]))
cout<< a[i]<<" ";
}
cout<<endl;
}
void main()
{


int n;
cout<<"Nhap vao so phan tu: ";
cin>>n;
int *a=new int[n+1];// cap phat dong de tiet kiem bo nho
nhap(a, n);
kTNT(a, n);
getch();
}

Read Users' Comments (0)

Support

Liên hệ DMTuan-Uneti
Mọi thông tin góp ý các bạn liên hệ với mình ! Mail:
  1. manhtuan.leo@gmail.com
  2. manhtuan.itvp@gmail.com

Y!M: manhtuan.it92