Admin Admin
Tổng số bài gửi : 34 Join date : 05/02/2010 Age : 37
| Tiêu đề: Bài Sinh Vien. Danh sách liên kết Wed Feb 24, 2010 10:30 am | |
| Về có bổ sung thêm thì nhớ post lên cho A E tham khảo nhe! - Code:
-
#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <alloc.h>
#define TRUE 1 #define FALSE 0
typedef struct Thongtin_SV { int masv; char hoten[50]; char ngaysinh[10]; char quequan[50]; char lop[10]; char nganh[10]; };
struct node { Thongtin_SV info; struct node *next; }; typedef node *nodeptr; typedef nodeptr Sinhvien; //typedef nodeptr position;
// Khoi tao DS lien ket void initialize(Sinhvien *sv) { *sv=NULL; }
//Khoi tao SinhVien void make_null(Sinhvien *sv) { (*sv)=(Sinhvien)malloc(sizeof(node)); (*sv)->next=NULL; }
// tim vi tri cua SV int vitri(Sinhvien *sv,Sinhvien svtim) { int vt=-1; Sinhvien temp; temp=*sv; while(temp!=NULL && temp!=svtim) { temp=temp->next; vt++; } return vt; }
//KT DS SV co rong ko? int empty(Sinhvien *sv) { return (*sv==NULL?TRUE:FALSE); }
//Them SV vao dau void push(Sinhvien *sv, Thongtin_SV x) { Sinhvien p; make_null(&p); p->info=x; p->next=*sv; *sv=p; }
//Them SV vao sau 1 SV khac void insert_after(Sinhvien sv,Thongtin_SV x) { Sinhvien p; if(sv==NULL) printf("Khong them dc SV!"); else { make_null(&p); p->info=x; p->next=sv->next; sv->next=p; } }
//Lay ra va xoa SV o dau DS Thongtin_SV pop(Sinhvien *sv) { Sinhvien p; Thongtin_SV x; if(!empty(sv)) { p=*sv; x=p->info; *sv=p->next; free(p); } return (x); }
//Xoa 1 SV Thongtin_SV del(Sinhvien sv) { Sinhvien p; Thongtin_SV x; if(sv==NULL) printf("Ko xoa dc sv"); else { p=sv; x=p->info; sv->next=p->next; free(p); } return (x); }
//Tim theo masv Sinhvien search(Sinhvien *sv, int x) { Sinhvien p; p=*sv; while(p->info.masv!=x && p!=NULL) p=p->next; return (p); }
//Duyet DS void duyet(Sinhvien *sv) { Sinhvien p; int stt=0; p=*sv; if(p==NULL) printf("Ko co SV trong DS"); else { while(p!=NULL) { printf("\n %d %d %s",++stt,p->info.masv,p->info.hoten); p=p->next; } } }
//Clear DS SV void clearlist(Sinhvien *sv) { Sinhvien p,q;//q la nut truoc, p la nut sau q=NULL; p=*sv; while(p!=NULL) { q=p; p=p->next; free(q); } *sv=NULL; }
//Sap Xep tang dan theo masv void sort(Sinhvien *sv) { Sinhvien p,q,pmin; Thongtin_sv min; for(p=*sv;p!=NULL;p=p->next) { min=p->info; pmin=p; for(q=p->next;q!=NULL;q=q->next) { if(min.masv > q->info.masv) { min=q->info; pmin=q; } } pmin->info=p->info; p->info=min; } }
void main() { Sinhvien sv,p; Thongtin_SV ttsv; int vt, cn; char c; initialize(&sv); do{ printf("\n1: Xem DS SV\n"); printf("2: Them SV vao DS\n"); printf("3: Xoa SV trong DS"); printf("4: Hieu chinh SV\n"); printf("5: Sap Xep DS SV theo MaSV\n"); printf("6: Tim kiem SV theo MaSSV\n"); printf("7: Xoa toan bo DS\n"); printf("0: Ket thuc ChTr\n"); printf("Chuc nang da chon\n"); scanf("%d",&cn); switch(cn) { case 1: { duyet(&sv); break; } case 2: { printf("\nMa SV:"); scanf("%d",ttsv.masv); printf("\nHo ten SV:"); scanf("%s",ttsv.hoten); printf("\nNgay sinh:"); scanf("%s",ttsv.ngaysinh); printf("\nQue quan:"); scanf("%s",ttsv.quequan); printf("\nLop:"); scanf("%s",ttsv.lop); printf("\nNganh:") ; scanf("%s",ttsv.nganh);
push(&sv,ttsv); break; } case 6: { printf("Nhap Ma SV can tim"); scanf("%d",&ttsv.masv); p=search(&sv,ttsv.masv); if(p==NULL) printf("ko tim dc SV"); else printf("Tim dc"); break; } } }while(cn!=0); }
| |
|