Kênh Tên Miền chuyên cung cấp tên miền đẹp, giá rẻ! Hãy liên hệ kỹ thuật: 0914205579 - Kinh doanh: 0912191357 để được tư vấn, hướng dẫn miễn phí, Cảm ơn quý khách đã ủng hộ trong thời gian qua!
kiem tien, kiem tien online, kiem tien truc tuyen, kiem tien tren mang
Thứ Hai, 21 tháng 5, 2012


// CaiDat_DSLK_Kep.cpp : Defines the entry point for the console application.
// DSLKK : o day la vi du ve doan tau, cac toa tau : hang khac va so ghe trong 1 toa

#include "stdafx.h"
#include <iostream>
#include <conio.h>

//Dinh nghia kieu toa tau
typedef struct {
    int number_of_seats;// Tong so ghe ngoi
    int number_of_passenger;// So hanh khach tren toa
} railroad_car;
typedef struct node{
    railroad_car infor;
    node *left;
    node *right;
} *dlist;

//KHoi tao DSLK
void init(dlist *l){
    *l= NULL;
}

//Nhap vao 1 toa tau
void inputRC(railroad_car &rc){
    printf("\n\n Nhap vao so ghe ngoi: ");
    scanf("%d",&rc.number_of_seats);
    printf("\n Nhap vao so hanh khach: ");
    scanf("%d",&rc.number_of_passenger);
    fflush(stdin);
}

//Hien thi 1 toa tau
void show(railroad_car rc, int i){
    printf("\n\n Toa thu %d: ",i);
    printf("\n So ghe ngoi:   %d",rc.number_of_seats);
    printf("\n So hanh khach: %d",rc.number_of_passenger);
}

//Duyet sang trai
void travel_left(dlist *l){
    dlist p= *l;
    int i= 1;
    while(p!= NULL){
        show(p->infor,i);
        i++;
        p= p->left;
    }
}
//Duyet sang phai
void travel_right(dlist *l){
    dlist p= *l;
    int i=1;
    //Chuyen p toi cuoi danh sach
    while(p->left!= NULL){
        p= p->left;
        i++;
    }
    while(p!= NULL){
        show(p->infor,i);
        i--;
        p= p->right;
    }
}
//=============== Them =================
//Them vao 1 node tren cung
void add_top(dlist *l){
    railroad_car rc;
    inputRC(rc);
    dlist p= *l;//p o dau danh sach
    dlist add = new node;//add la node can them vao
    add->infor= rc;
    add->left= p;
    if(p!= NULL)
        p->right= add;
    add->right= NULL;
    *l= add;//gan *l len dau danh sach
}
//Them 1 node vao cuoi
void add_bottom(dlist *l){
    railroad_car rc;
    inputRC(rc);//Nhap thong tin
    dlist p= *l;//p o dau danh sach
    dlist add = new node;//add la node can them vao
    add->infor = rc;
    //Neu danh sach rong
    if(p== NULL){
        add->left= NULL;
        add->right= NULL;
        *l= add;
    }
    else{
        //Duyet toi cuoi danh sach
        while(p->left!=NULL)
            p= p->left;
        //p dang o cuoi danh sach
        add->left= NULL;
        p->left= add;
        add->right= p;
    }
}
//Them 1 node vao giua
void add_before(dlist *l){
    int n,i=1;
    dlist p= *l;
    printf("\n Nhap vi tri ban muon them vao truoc: ");
    scanf("%d",&n);
    while(p!= NULL && i<n ){
        p= p->left;
        i++;
    }
    if(p== NULL || n<1){//Neu ko ton tai vi tri
        printf("\n Vi tri khong hop le ");
        getch();
        return;
    }
    //Neu ton tai vi tri do
    railroad_car rc;
    inputRC(rc);
    dlist add = new node;//add la node can them vao
    add->infor= rc;
        //neu vi tri do la cuoi cung
        if(p->left== NULL){
            add->left= NULL;
            add->right= p;
            p->left= add;
        }
        else{
            dlist q;
            q= p->left;
            //Can them vao giua p va q . p dang o truoc q
                //Noi p voi add
                p->left= add;
                add->right= p;
                //Noi add voi q
                add->left= q;
                q->right= add;
        }
}

//=================Xoa===========================
//Xoa o dau danh sach
void del_top(dlist *l){
    dlist p= *l;
    if(p== NULL){
        printf("\n Danh sach rong !");
        return;
    }
    else{
        if(p->left== NULL){
            delete(p);
            *l= NULL;
        }
        else{
            dlist q= p->left;//q o ben phai p
            delete(p);
            q->right= NULL;
            *l= q;
        }
    }
}

//Xoa o cuoi
void del_bottom(dlist *l){
    dlist p= *l;
    if(p== NULL){
        printf("\n Danh sach rong !");
        return;
    }
    else{
        if(p->left== NULL){
            delete(p);
            *l= NULL;
        }
        else{
            while((p->left)->left!= NULL)
                p= p->left;
            dlist q= p->left;
            delete(q);
            p->left= NULL;
        }
    }
}
//Xoa 1 node truoc 1 node
void del_before(dlist *l){
    int n,i=1;
    dlist p= *l;
    printf("\n Nhap vi tri node ");
    scanf("%d",&n);
    if(p== NULL){
        printf("\n Danh sach rong !");
        return;
    }
    while((p->left)->left!= NULL && i<n){
        p= p->left;
        i++;
    }
    //Neu chi co 1 node
    if(p->left== NULL || n<1){
        printf("\n Vi tri khong chinh xac ");
        return;
    }

    dlist del= p->left;//del la phan tu bi xoa
    //Neu node phai xoa la cuoi cung
    if(del->left== NULL){
        delete(del);
        p->left= NULL;
        return;
    }
    //Sau khi del bi xoa can noi p voi q
    p->left=del->left;printf("\n f gan ");
    (del->left)->right= p;printf("\n f bat dau xoa");
    delete(del);
}


void menu(){
    printf("\n\n============= Danh sach lien ket kep =================\n");
    printf("\n 1. Them vao dau danh sach");
    printf("\n 2. Them vao cuoi danh sach");
    printf("\n 3. Them vao truoc 1 node");
    printf("\n 4. xoa dau danh sach");
    printf("\n 5. Xoa cuoi danh sach");
    printf("\n 6. Xoa 1 node dang truoc 1 node");
    printf("\n 7. Duyet trai");
    printf("\n 8. Duyet phai");
    printf("\n 0. ----- Thoat -----\n");
}
// Ham thuc hien cac chuc nang
void execute(){
    dlist l;
    init(&l);
    char choice;
    do{
        menu();
printf("\n Chon 1 trong cac chuc nang tren \n");
        scanf("%c",&choice);
        if(choice== '0') exit(0);
        fflush(stdin);
            switch(choice){
                case '1':{
                    printf("\n 1. Them vao dau danh sach");
                    add_top(&l);
                    printf("\n      THEM THANH CONG    ");
                    getch();
                }break;

                case '2':{
                    printf("\n 2. Them vao cuoi danh sach");
                    add_bottom(&l);
                    printf("\n      THEM THANH CONG    ");
                    getch();
                }break;

                case '3':{
                    printf("\n 3. Them vao truoc 1 node");
                    add_before(&l);
                    printf("\n      THEM THANH CONG    ");
                    getch();
                }break;

                case '4':{
                    printf("\n 4. xoa dau danh sach");
                    del_top(&l);
                    printf("\n      XOA THANH CONG    ");
                    getch();
                }break;

                case '5':{
                    printf("\n 5. Xoa cuoi danh sach");
                    del_bottom(&l);
                    printf("\n      XOA THANH CONG    ");
                    getch();
                }break;

                case '6':{
                    printf("\n 6. Xoa 1 node");
                    del_before(&l);
                    printf("\n      XOA THANH CONG    ");
                    getch();
                }break;

                case '7':{
                    printf("\n     DUYET TRAI    ");
                    travel_left(&l);
                    getch();
                }break;

                case '8':{
                    printf("\n     DUYET PHAI    ");
                    travel_right(&l);
                    getch();
                }break;
            }
    }while(true);

}
int main(){
    execute();
    return (0);
}

0 nhận xét:

Đăng nhận xét

domain, domain name, premium domain name for sales

Popular Posts