kiem tra cau truc du lieu.txt nguyenanhque

Màu nền
Font chữ
Font size
Chiều cao dòng

#include<iostream.h>  

#include<conio.h>  

#include<process.h>

struct sn  

{  

int Item;  

sn* next; //con tro toi phan tu tiep theo  

};

struct ds  

{  

bool sort; //danh sach da xap xep hay chua  

sn* infor; //phan tu dau tien cua danh sach  

int count; //so phan tu cua mang  

};

int Menu(bool sort);  

void nhap(ds* pds);  

void hienthi(ds* pds);  

void boxung(ds* pds,int X,int k);  

void xoa(ds* pds,int k);  

void xoasoam(ds* pds);  

void sapxep(ds* pds);  

int boxungsort(ds* pds,int X);  

void infor(ds* pds);

void main()  

{  

ds* pds= new ds; //con tro toi danh sach  

pds->infor= new sn; //cap phat vung nho cho phan tu dau tien cua mang  

pds->count= 0; //khoi tao so phan tu bang 0  

pds->sort= false;  

int X, k;

clrscr();  

nhap(pds);  

clrscr();  

cout<<"Danh sach da nhap: "<<endl;  

hienthi(pds);  

cout<<"

Nhan mot phim bat ki de tiep tuc...";  

getch();  

while(1)  

{  

switch(Menu(pds->sort))  

{  

clrscr();  

cout<<"

Danh sach (truoc): ("<<pds->count<<" phan tu):

";  

hienthi(pds);  

cout<<endl<<endl;  

case 0:  

exit(0);  

case 1:  

cout<<endl;  

nhap(pds);  

clrscr();  

break;  

case 2:  

clrscr();  

cout<<endl<<endl;  

break;  

case 3:  

clrscr();  

cout<<"Danh sach truoc khi sap xep: "<<endl;  

hienthi(pds);  

sapxep(pds);  

pds->sort= true;  

cout<<"

Ket qua cua qua trinh sap xep:";  

break;  

case 4:  

clrscr();  

cout<<" Thao tac xoa mot phan tu: "<<endl<<endl;  

cout<<"Danh sach truoc khi xoa bo: "<<endl;  

hienthi(pds);  

cout<<"

Vao vi tri phan tu muon xoa: "; cin>>k;  

xoa(pds,k);  

cout<<"

Ket qua sau khi xoa phan tu o vi tri "<<k<<":

";  

break;  

case 5:  

clrscr();  

cout<<"Thao tac xoa cac so am: "<<endl<<endl;  

cout<<"Danh sach truoc khi xoa: "<<endl;  

hienthi(pds);  

xoasoam(pds);  

cout<<"

Ket qua sau qua trinh xoa cac phan tu am:

";  

break;  

case 6:  

clrscr();  

cout<<"Thao tac bo xung mot phan tu va mot vi tri: "<<endl<<endl;  

cout<<"Danh sach hien thoi: "<<endl;  

hienthi(pds);  

cout<<"

Bo xung X vao vi tri k: [X, k]= ";  

cin>>X>>k;  

boxung(pds,X,k);  

cout<<"

Danh sach sau khi bo xung "<<X<<" vao vi tri "<<k<<": "<<endl;  

break;  

case 7:  

clrscr();  

cout<<"Danh sach truoc: "<<endl;  

hienthi(pds);  

cout<<"

Danh sach sau khi bo xung "<<X<<":"<<endl;  

boxungsort(pds,X);  

break;  

case 8:  

clrscr();  

cout<<"Thong tin sanh sach:"<<endl<<endl;  

infor(pds);  

}

hienthi(pds);  

cout<<"

Nham mot phim bat ki de tiep tuc..."<<endl;  

getch();  

}  

}

void nhap(ds* pds)  

{  

cout<<"Nhap vao so phan tu du tinh se nhap: ";  

int n;  

int i= 1;  

cin>>n;

cout<<"

Nhap danh sach: "<<endl;  

sn* tg= pds->infor; //tao con tro toi thong tin cua phan tu va tro vao phan tu dau tien cua danh sach  

while(i<= n)  

{  

cout<<"

Phan tu thu "<<i<<": ";  

cin>>tg->Item;  

if(tg->Item!= -1)  

{  

pds->count++; //tang so phan tu cua ds len 1  

tg->next= new sn; //cap phat vung nho cho phan tu tiep theo  

tg= tg->next; //tg tro toi phan tu tiep theo trong ds  

tg->next= NULL;  

i++;  

}  

else //truong hop nhap vao -1  

{  

//tg->next= NULL;//no la diem ket thuc, do do ko chua phan tu nao sau do nua  

break; //thoat vong while  

}  

}  

}

void hienthi(ds* pds)  

{  

sn* tg= pds->infor; //tg tro toi phan tu dau tien trong danh sach  

cout<<"(gom "<<pds->count<<" phan tu)."<<endl;  

while(tg->next!= NULL)//phan tu chot mang co gia tri next=NULL  

{  

cout<<tg->Item<<" ";  

tg= tg->next;  

}  

}

void boxung(ds* pds,int X,int k)  

{  

sn* tg= pds->infor;  

sn* p= new sn;  

p->Item= X;

if(k== 1)  

{  

p->next= pds->infor;  

pds->infor= p;  

pds->count++;  

}  

else  

if(k>pds->count+1) cout<<"Vi tri nay nam ngoai mang, danh sach dang co "<<pds->count<<" phan tu."<<endl;  

else  

{  

int i= 1;  

while(tg->next!= NULL && i<k-1)  

{  

tg= tg->next;  

i++;  

}  

p->next= tg->next;  

tg->next= p;  

pds->count++;  

}  

}  

void xoa(ds* pds,int k)  

{  

sn* tg= pds->infor;

if(k== 1)  

{  

pds->infor= tg->next;  

delete(tg);  

pds->count--;  

}  

else  

if(k<1 || k> pds->count) cout<<"Vi tri nay nam ngoai mang, danh sach dang co "<<pds->count<<" phan tu."<<endl;  

else  

{  

int i= 1;  

while(tg->next!= NULL && i<k-1)  

{  

tg= tg->next;  

i++;  

}  

tg->next= tg->next->next;  

pds->count--;  

///delete(tg);  

}  

}

void xoasoam(ds* pds)  

{  

sn* tg= pds->infor;  

sn* tgnext= tg->next;

while(tg->Item< 0 && tg->next!= NULL) //xoa lien tiep cac phan tu am o dau danh sach  

{  

cout<<"Lap 1"<<endl;  

pds->infor= tg->next;  

tg= tg->next;  

pds->count--;  

}

///toi day, tg tro toi phan tu duong dau tien trong day

while(tg->next!= NULL)  

{  

tgnext= tg->next;  

//cout<<"Lap 2"<<endl;  

while(tgnext->Item< 0 && tgnext->next!= NULL) {tgnext= tgnext->next; pds->count--; } //tim so duong tiep theo

tg->next= tgnext;  

tg= tg->next; //tg tro vao phan tu duong tiep theo  

}  

}

void sapxep(ds* pds) ///sap xep tang dan bang phuong phap select sort;  

{  

sn* tg= pds->infor; //phan tu hien tai  

sn* tg_chay; //tim kiem nho nhat  

sn* min;  

while(tg->next!= NULL)  

{  

tg_chay= tg;  

min= tg_chay;  

while(tg_chay->next!= NULL)  

{  

if(tg_chay->Item< min->Item) min= tg_chay;  

tg_chay= tg_chay->next;  

}  

//////doi cho  

int trung_gian= tg->Item;  

tg->Item= min->Item;  

min->Item= trung_gian;  

tg= tg->next;  

}  

}

int boxungsort(ds* pds,int X) ///sap xep tang dan  

{  

sn* tg= pds->infor;  

sn* pre_tg= NULL; //phan tu truoc tg  

sn* p= new sn; //phan tu moi

p->Item= X;

if(tg->Item> X)  

{  

p->next= tg;  

pds->infor= p;  

pds->count++;  

return 0; //bo xung thanh cong  

}  

else  

{  

pre_tg= tg;  

tg->next;  

}  

while(tg->next!= NULL && tg->Item<X)  

{  

pre_tg= tg;  

tg= tg->next;  

}  

if(tg->next== NULL) return 0;  

else  

{  

pre_tg->next= p;  

p->next= tg;  

}  

}

void infor(ds* pds)  

{  

int am= 0;  

int duong= 0;  

sn* tg= pds->infor;

while(tg->next!= NULL)  

if(tg->Item<0) am++;  

else duong++;  

cout<<"

So phan tu cua danh sach: "<<pds->count<<endl;  

cout<<"So gia phan tu am: "<<am<<endl;  

cout<<"So gia tri duong: "<<duong<<endl;  

}

int Menu(bool sort)  

{  

lap:  

clrscr();  

cout<<endl<<endl;  

textcolor(2);  

cout<<"Lua chon cac thao tac:"<<endl<<endl;  

cout<<" 1. Nhap hoac nhap lai danh sach hoan toan moi."<<endl;  

cout<<" 2. Hien thi."<<endl;  

cout<<" 3. Sap xep."<<endl;  

cout<<" 4. Xoa mot phan tu."<<endl;  

cout<<" 5. Xoa cac so am."<<endl;  

cout<<" 6. Bo xung."<<endl;  

cout<<" 7. Thong tin mang hien tai."<<endl;  

cout<<" 8. Thoat."<<endl;  

textcolor(0);  

char ch= getch();  

if(ch>='0'&&ch<='8')  

switch(ch)  

{  

case '6':  

if(sort== true)  

{  

cout<<"

Mang da duoc sap xep!"<<endl;  

cout<<"Nhan 'Y' de chen vao mang co sap xep, phim bat ki de chen binh thuong.";  

char ch= getch();  

if(ch=='Y' || ch=='y')  

{  

clrscr();  

return 7;  

}  

}  

else return 6;  

break;  

case '7':  

return 8;  

default:  

return ((int)ch-48); ///ki tu so '1' co ma ASCII la 31  

}  

else goto lap;  

return 0;  

}

Bạn đang đọc truyện trên: Truyen2U.Pro