1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng về cấu trúc dữ liệu và giải thuật

19 398 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 19
Dung lượng 56,8 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

#include #include #include #include #define MAX 100 typedef char inf1[20]; typedef float inf2; typedef float inf3; typedef struct _svien { //Dinh nghia kieu du lieu hsinh inf1 hten

Trang 1

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <string.h>

#define MAX 100

typedef char inf1[20];

typedef float inf2;

typedef float inf3;

typedef struct _svien { //Dinh nghia kieu du lieu hsinh

inf1 hten;

inf2 cnang;

inf3 ccao;

} svien;

typedef svien list[MAX];

list p;

// Nguyen mau ham

int nhap();//Nhap thong tin cho danh sach sinh vien svien nhapsv();//Nhap thong tin cho 1 sihn vien

void xuat(int);//Xuat danh sach sinh vien ra man hinh int them(svien,int,int);//Them mot sv vao ds

int timkiem(inf1,int);//Tim 1 nguoi tra ve vi tri trong ds int xoa(int,int); //Xoa mot sv ra ds

void menu();//hien thi menu

int main(){

clrscr();

svien temp;

inf1 hten;

int n=0,choice,vitri;//n la so luong sinh vien

while (1){

clrscr();

Trang 2

menu();

printf("\nMoi lua chon:");scanf("%d",&choice); fflush(stdin); switch (choice){

case 0: exit(0);

case 1:n=nhap();break;

case 2:clrscr();xuat(n);break;

case 3:strcpy(temp.hten,"Le Them");

temp.ccao=155;temp.cnang=temp.ccao-105;

n=them(temp,2,n);break;

case 4:temp=nhapsv();

printf("\nVi tri muon them:");scanf("%d",&vitri);

n=them(temp,vitri,n);break;

case 5:timkiem("Le Tim",n); break;

case 6:printf("\nNhap ten sv:

");gets(hten);timkiem(hten,n);break;

case 7:n=xoa(2,n);break;

case 8:printf("\nNhap vi tri can xoa:

");scanf("%d",&vitri);fflush(stdin);

n=xoa(vitri,n);break;

case 9:if((vitri=timkiem("Le Xoa",n))!=0) n=xoa(vitri,n);break; case 10: printf("\nNhap ten: ");gets(hten);

if ((vitri=timkiem(hten,n))!=0) n=xoa(vitri,n); break;

default: printf("Lua chon khong hop le !");getch();break;

}

};

}

int nhap(){

inf1 hten;

int i=0;

inf3 ccao;

Trang 3

do{

printf("\nNhap ten sv thu %d (nhap 'end' de ket thuc) :",i+1); gets(hten);

if (strcmpi(hten,"end")&&(i<MAX)) {

strcpy(p[i].hten,hten);

printf("\nNhap thong tin cho sv %s:",p[i].hten);

printf("\nChieu cao (cm): ");scanf("%f",&ccao);fflush(stdin); p[i].ccao=ccao;

p[i].cnang= ccao - 105;

i++;

}

if (i==MAX) printf("FULL");

} while (strcmpi(hten,"end")&&(i<MAX));

return i;

}

svien nhapsv(){

svien temp;

inf2 ccao;

inf1 hten;

printf("\nHo ten: ");gets(hten);

strcpy(temp.hten,hten);

printf("\nChieu cao: (cm) ");scanf("%f",&ccao);fflush(stdin); temp.ccao=ccao;

temp.cnang=ccao-105;

return temp;

}

void xuat(int n){

int i;

if (n==0) printf("\nDanh sach Rong !");

Trang 4

for (i=0;i<n;i++){

printf("\n%d,Sv:%-20s",i+1,p[i].hten);

printf("\tcc: %4.1f (cm) \tcn: %4.1f (kg) ",p[i].ccao,p[i].cnang); }

getch();

}

int them(svien temp, int vitri,int n){

int i;

if (vitri<1||vitri>n+1) printf("\nVi tri khong hop le !");

else if (n>=100) printf("\nDanh sach het cho trong !");

else{

n++;

for (i=n-1;i>=vitri;i ) p[i]=p[i-1];

p[i]=temp;

printf("\nThanh cong !");

}

getch();

return n;

}

int timkiem(inf1 hten,int n){

int i=0;

while (strcmpi(p[i].hten,hten)) i++;

if (i>=n) printf("\nKhong tim thay %s trong danh sach !",hten); else{

printf("\nThong tin sv %s :",hten);

printf("\nCcao: %4.1f \t Cnang: %4.1f \t Vi tri:

%3d",p[i].ccao,p[i].cnang,i+1);

}

getch();

Trang 5

if (i<100) return i+1;

else return 0;

}

int xoa(int vitri,int n){

int i;

if (vitri<1||vitri>n) printf("\nVi tri khong thich hop");

else {

for(i=vitri-1;i<n;i++) p[i]=p[i+1];

n ;

printf("\nThanh Cong ");

}

getch();

return n;

}

void menu(){

printf("\n1 Nhap moi mot danh sach sinh vien");

printf("\n2 Liet ke danh sach");

printf("\n3 Them 'Le Them' ccao 155 vao vi tri thu 2 danh sach");

printf("\n4 Them mot sv vao danh sach");

printf("\n5 Tim kiem sv 'Le Tim' trong danh sach");

printf("\n6 Xem thong tin mot sv");

printf("\n7 Xoa sv thu 2 ra khoi danh sach");

printf("\n8 Xoa sv co vi tri x ra khoi danh sach");

printf("\n9 Xoa sv 'Le Xoa' trong ds neu co");

printf("\n10 Xoa mot sv ra khoi danh sach");

printf("\n0 Ket thuc chuong trinh");

}

//Nhap vao ds sinh vien LIFO: vao sau ra truoc

#include <stdio.h>

Trang 6

#include <conio.h>

#include <stdlib.h>

#include <string.h>

#define MAX 100

typedef char inf1[20];

typedef float inf2;

typedef float inf3;

typedef struct _svien { //Dinh nghia kieu du lieu hsinh

inf1 hten;

inf2 cnang;

inf3 ccao;

struct _svien *next;

} svien;

svien *top=NULL,*p=NULL; //Phan tu dau tien cua ds

// Nguyen mau ham

svien *nhapsv(svien *tem);//Nhap thong tin cho danh sach sinh vien

void xuatsv(svien *tem);//Xuat thong tin 1 sinh vien

void pus(svien *tem);//Them mot sv vao dau danh sach tang dan theo ho ten

void xuatds(svien *top);

void nhapds();//Nhap danh sach sin vien

void xoasv(inf1 hten);//Xoa sv co ten la hten

void timsv(inf1 hten);//Tim va xuat thong tin sv co ten la hten void menu();//Hien thi menu

int main(){

clrscr();

Trang 7

inf1 hten;

int choice;

while (1){

menu();

printf("\nMoi lua chon:");scanf("%d",&choice); fflush(stdin); switch (choice){

case 0: exit(0);

case 1:nhapds();break;

case 2:clrscr();p=new svien;p=nhapsv(p);pus(p);break;

case 3:clrscr();xuatds(top);break;

case 4: printf("\Nhap ho ten sv muon xem thong tin:

");gets(hten);timsv(hten);break;

case 5:if (top!=NULL) top=top->next; else printf("\nDanh sach rong !"); break;

case 6: printf("\nNhap ho ten sv can xoa:

");gets(hten);xoasv(hten);break;

default: printf("Lua chon khong hop le !");getch();break;

}

clrscr();

};

}

svien *nhapsv(svien *tem){

inf1 hten={0};

inf2 ccao=0;

printf("\nNhap thong tin cho sv:");

printf("\nNhap ten: "); gets(hten);

strcpy(tem->hten,hten);

printf("Nhap chieu cao (cm):");scanf("%f",&ccao);

fflush(stdin);//xoa bo nho dem ban phim

Trang 8

tem->ccao=ccao;

tem->cnang=ccao-105;

return tem;

}

void xuatsv(svien *tem){

printf("\nTen sv: ");printf("%-20s",tem->hten);

printf("\tChieu cao %.1f (cm) \t Can nang chuan

%.1f",tem->ccao,tem->cnang);

}

void pus(svien *tem){

tem->next=top;

top=tem;

}

void xuatds(svien *top){

svien *tem;

tem=top;//Cat giu top

if (tem==NULL) printf("\nDanh sach rong !");

else printf("\nDanh sach sv:");

while (tem!=NULL){

xuatsv(tem); //xuat thong tin

tem=tem->next;//tro den sv tiep theo

}

getch();

}

void nhapds(){

int end=2;

while (end==2){

p=new svien;//Cap phat moi bo nho cho sv moi

p=nhapsv(p);//Nhap thong tin cho sv p

pus(p);

printf("\t\t\t1 Ket thuc");

Trang 9

printf("\n\t\t\t2 Nhap tiep");

printf("\n\t\t\tChoice ? ");

scanf("%d",&end) ;fflush(stdin);

}

clrscr();

}

void xoasv(inf1 hten){

svien *hientai,*ketruoc;

hientai=top;

while ((hientai!=NULL)&&strcmpi(hientai->hten,hten)) { ketruoc=hientai;

hientai=hientai->next;

};

if (hientai==NULL) printf("\nKhong tim thay sinh vien !"); else {

if (hientai==top) top=hientai->next;

else ketruoc->next=hientai->next;

printf("\nXoa thanh cong");

getch();

}

}

void timsv(inf1 hten){

svien *tem;

tem=top;

while ((tem!=NULL)&&strcmpi(tem->hten,hten))

tem=tem->next;

if (tem==NULL) printf("\nKhong tim thay sinh vien");

else xuatsv(tem);

getch();

}

void menu(){

Trang 10

printf("\n1 Nhap moi mot danh sach sinh vien");

printf("\n2 Them mot sv vao dau danh sach");

printf("\n3 Liet ke danh sach");

printf("\n4 Nhap ten sv can xem thong tin");

printf("\n5 Xoa sv dau tien ra khoi danh sach");

printf("\n6 Nhap ten sinh vien can xoa ra khoi danh sach"); printf("\n0 Ket thuc chuong trinh");

}

//Danh Sach dang FIFO: vao truoc ra truoc

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <string.h>

#define MAX 100

typedef char inf1[20];

typedef float inf2;

typedef float inf3;

typedef struct _svien { //Dinh nghia kieu du lieu hsinh

inf1 hten;

inf2 cnang;

inf3 ccao;

struct _svien *next;

} svien;

svien *first=NULL,*last=NULL,*p=NULL;

// Nguyen mau ham

svien *nhapsv(svien *tem);//Nhap thong tin cho danh sach sinh

vien

void xuatsv(svien *tem);//Xuat thong tin 1 sinh vien

Trang 11

void pus(svien *tem);//Them mot sv vao cuoi danh sach lien ket void pus1(svien *tem);//Them mot sv vao dau danh sach

void xuatds(svien *top);

void nhapds();//Nhap danh sach sin vien

void xoasv(inf1 hten);//Xoa sv co ten la hten

void timsv(inf1 hten);//Tim va xuat thong tin sv co ten la hten void menu();//Hien thi menu

int main(){

clrscr();

inf1 hten;

int choice;

while (1){

menu();

printf("\nMoi lua chon:");scanf("%d",&choice); fflush(stdin); switch (choice){

case 0: exit(0);

case 1:nhapds();break;

case 2:clrscr();p=new svien;p=nhapsv(p);pus1(p);break;

case 3:clrscr();xuatds(first);break;

case 4: printf("\Nhap ho ten sv muon xem thong tin:

");gets(hten);timsv(hten);break;

case 5:if (first!=NULL) first=first->next; else printf("\nDanh sach rong !"); break;

case 6: printf("\nNhap ho ten sv can xoa:

");gets(hten);xoasv(hten);break;

default: printf("Lua chon khong hop le !");getch();break;

}

clrscr();

Trang 12

};

}

svien *nhapsv(svien *tem){

inf1 hten={0};

inf2 ccao=0;

printf("\nNhap thong tin cho sv:");

printf("\nNhap ten: "); gets(hten);

strcpy(tem->hten,hten);

printf("Nhap chieu cao (cm):");scanf("%f",&ccao);

fflush(stdin);//xoa bo nho dem ban phim

tem->ccao=ccao;

tem->cnang=ccao-105;

return tem;

}

void xuatsv(svien *tem){

printf("\nTen sv: ");printf("%-20s",tem->hten);

printf("\tChieu cao %.1f (cm) \t Can nang chuan

%.1f",tem->ccao,tem->cnang);

}

void pus(svien *tem){ //Them vao cuoi danh sach phan tu tem tem->next=NULL;

if (first==NULL) first=tem;

else last->next=tem;

last=tem;

}

void pus1(svien *tem){//Them 1 sv vao dau danh sach

tem->next=first;

first=tem;

}

void xuatds(svien *top){

svien *tem;

Trang 13

tem=top;//Cat giu top

if (tem==NULL) printf("\nDanh sach rong !");

else printf("\nDanh sach sv:");

while (tem!=NULL){

xuatsv(tem); //xuat thong tin

tem=tem->next;//tro den sv tiep theo

}

getch();

}

void nhapds(){

int end=2;

while (end==2){

p=new svien;//Cap phat moi bo nho cho sv moi

p=nhapsv(p);//Nhap thong tin cho sv p

pus(p);

printf("\t\t\t1 Ket thuc");

printf("\n\t\t\t2 Nhap tiep");

printf("\n\t\t\tChoice ? ");

scanf("%d",&end) ;fflush(stdin);

}

clrscr();

}

void xoasv(inf1 hten){

svien *hientai,*ketruoc;

hientai=first;

while ((hientai!=NULL)&&strcmpi(hientai->hten,hten)) { ketruoc=hientai;

hientai=hientai->next;

};

if (hientai==NULL) printf("\nKhong tim thay sinh vien !"); else {

Trang 14

if (hientai==first) first=hientai->next;

else ketruoc->next=hientai->next;

printf("\nXoa thanh cong");

getch();

}

}

void timsv(inf1 hten){

svien *tem;

tem=first;

while ((tem!=NULL)&&strcmpi(tem->hten,hten))

tem=tem->next;

if (tem==NULL) printf("\nKhong tim thay sinh vien");

else xuatsv(tem);

getch();

}

void menu(){

printf("\n1 Nhap moi mot danh sach sinh vien");

printf("\n2 Them mot sv vao dau danh sach");

printf("\n3 Liet ke danh sach");

printf("\n4 Nhap ten sv can xem thong tin");

printf("\n5 Xoa sv dau tien ra khoi danh sach");

printf("\n6 Nhap ten sinh vien can xoa ra khoi danh sach"); printf("\n0 Ket thuc chuong trinh");

}

//Danh Sach sap xep theo thu tu tang dan cua ho ten

// su dung stack

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <string.h>

#define MAX 100

Trang 15

typedef char inf1[20];

typedef float inf2;

typedef float inf3;

typedef struct _svien { //Dinh nghia kieu du lieu hsinh

inf1 hten;

inf2 cnang;

inf3 ccao;

struct _svien *next;

} svien;

svien *top=NULL,*p=NULL;

// Nguyen mau ham

svien *nhapsv(svien *tem);//Nhap thong tin cho danh sach sinh vien

void xuatsv(svien *tem);//Xuat thong tin 1 sinh vien

void pus(svien *tem);//Them sv vao ds theo tu tang dan cua ho ten

void pus1(svien *tem);//Them mot sv vao dau danh sach

void xuatds(svien *top);

void nhapds();//Nhap danh sach sin vien

void xoasv(inf1 hten);//Xoa sv co ten la hten

void timsv(inf1 hten);//Tim va xuat thong tin sv co ten la hten void menu();//Hien thi menu

int main(){

clrscr();

inf1 hten;

int choice;

while (1){

Trang 16

menu();

printf("\nMoi lua chon:");scanf("%d",&choice); fflush(stdin); switch (choice){

case 0: exit(0);

case 1:top=NULL;nhapds();break;

case 2:clrscr();p=new svien;p=nhapsv(p);pus1(p);break;

case 3:clrscr();xuatds(top);break;

case 4: printf("\Nhap ho ten sv muon xem thong tin:

");gets(hten);timsv(hten);break;

case 5:if (top!=NULL) top=top->next; else printf("\nDanh sach rong !"); break;

case 6: printf("\nNhap ho ten sv can xoa:

");gets(hten);xoasv(hten);break;

default: printf("Lua chon khong hop le !");getch();break;

}

clrscr();

};

}

svien *nhapsv(svien *tem){

inf1 hten={0};

inf2 ccao=0;

printf("\nNhap thong tin cho sv:");

printf("\nNhap ten: "); gets(hten);

strcpy(tem->hten,hten);

printf("Nhap chieu cao (cm):");scanf("%f",&ccao);

fflush(stdin);//xoa bo nho dem ban phim

tem->ccao=ccao;

tem->cnang=ccao-105;

return tem;

Trang 17

}

void xuatsv(svien *tem){

printf("\nTen sv: ");printf("%-20s",tem->hten);

printf("\tChieu cao %.1f (cm) \t Can nang chuan

%.1f",tem->ccao,tem->cnang);

}

void pus(svien *tem){ //Them sv vao ds theo thu tu tang dan ho

ten

svien *hientai=NULL,*ketruoc=NULL;

hientai=top;

while

((strcmpi(tem->hten,hientai->hten)>0)&&(hientai!=NULL)){

ketruoc=hientai;

hientai=hientai->next;

}

if (hientai==top) {tem->next=top;top=tem;}

else {

tem->next=ketruoc->next;

ketruoc->next=tem;

}

}

void pus1(svien *tem){//Them 1 sv vao dau danh sach

tem->next=top;

top=tem;

}

void xuatds(svien *top){

svien *tem;

tem=top;//Cat giu top

if (tem==NULL) printf("\nDanh sach rong !");

else printf("\nDanh sach sv:");

while (tem!=NULL){

Ngày đăng: 19/10/2014, 11:51

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w