danh sach lk don2
đề:Khai báo cấu trúc dữ liệu(dạng con trỏ) của danh sách liên kết đơn để lưu danh sách sinh viên
a.Viết hàm liệt kê tên và điểm trung bình của tất cả các sinh viên có điểm trung bình ≥ 5.0
b.Viết hàm sắp xếp các sinh viên tăng theo điểm trung bình
c.Viết hàm chèn sinh viên vào một danh sách đã được sắp xếp ở câu(b) sao cho khi chèn danh sách vẫn có thứ tự tăng dần theo điểm trung bình
Code:
#include<conio.h>
#include<stdio.h>
#include<string.h>
struct Node
{
char Ten[30];
float dtb;
Node *next;
};
Node *head;
Node* MakeNode(char hoten[30],float x)
{
Node *n=new Node;
n->dtb=x;
strcpy(n->Ten,hoten);
n->next=NULL;
return n;
}
void SapXep(Node* head)
{
Node *p,*p1;
p=head;
while(p->next!=NULL)
{
p1=p;
while(p1!=NULL)
{
if(p->dtb > p1->dtb)
{
float tam;
char tam1[30];
tam=p->dtb;
strcpy(tam1,p->Ten);
p->dtb=p1->dtb;
strcpy(p->Ten,p1->Ten);
p1->dtb=tam;
strcpy(p1->Ten,tam1);
}
p1=p1->next;
}
p=p->next;
}
}
int main()
{
int i,n;
float x;
char hoten[30];
printf(" Nhap so luong sinh vien :");
scanf("%d",&n);
fflush(stdin);
Node *p;
for(i=0;i<n;i++)
{
printf("Nhap ho ten:");
gets(hoten);
printf(" Nhap dtb :");
scanf("%f",&x);
fflush(stdin);
if(head==NULL)
{
head=MakeNode(hoten,x);
p=head;
}
else
{
p->next=MakeNode(hoten,x);
p=p->next;
}
}
p=head;
printf("
Danh sach sinh vien vua nhap :
");
while(p!=NULL)
{
printf(" %30s %5.2f
",p->Ten,p->dtb);
p=p->next;
}
p=head;
printf("
Danh sach sinh vien co diem trung binh lon hoac bang 5 :
");
while(p!=NULL)
{
if(p->dtb>=5)
printf(" %30s %5.2f
",p->Ten,p->dtb);
p=p->next;
}
SapXep(head);
p=head;
printf("
Danh sach sinh vien sau khi sap xep dtb tang dan :
");
while(p!=NULL)
{
printf(" %30s %5.2f
",p->Ten,p->dtb);
p=p->next;
}
printf("
Nhap them sinh vien ^^ :
");
printf("Nhap ho ten:");
gets(hoten);
printf(" Nhap dtb :");
scanf("%f",&x);
fflush(stdin);
p=head;
while(p->next!=NULL)
{
p=p->next;
}
p->next=MakeNode(hoten,x);
SapXep(head);
printf("
Danh sach sinh vien sau khi chen them sinh vien :
");
p=head;
while(p!=NULL)
{
printf(" %30s %5.2f
",p->Ten,p->dtb);
p=p->next;
}
}
Code:
đây! câu c của Nhật Nguyễn đây! - (nhưng mà vì để demo câu c nên khi nhập danh sách ban đầu phải nhập tăng dần theo diểm tb)
#include <conio.h>
#include <stdio.h>
#include <alloc.h>
typedef struct sinhvien
{
char msv[10];
char tensv [50];
float dtb;
};
typedef struct nut
{
sinhvien giatri;
nut *next;
} *nut_sv;
nut_sv taonut ()
{
nut_sv p;
p = (nut_sv) malloc(sizeof ( struct nut));
return (p);
}
void themvaodau (nut_sv *ds_sv, sinhvien sv)
{
nut_sv p;
p= taonut ();
p->giatri = sv;
p->next = *ds_sv;
*ds_sv = p;
}
void themvaocuoi (nut_sv *ds_sv, sinhvien sv)
{
nut_sv p, q;
p=taonut ();
p->giatri = sv;
q=*ds_sv;
while ( q->next !=NULL)
q=q->next;
q->next = p;
p->next = NULL;
}
void themvaogiua (nut_sv nuttruoc, sinhvien sv)
{
nut_sv p;
if (nuttruoc->next == NULL)
themvaocuoi (&nuttruoc, sv);
else
{
p=taonut ();
p->giatri=sv;
p->next = nuttruoc->next;
nuttruoc->next = p;
}
}
void in (nut_sv *ds_sv)
{
nut_sv p;
p=*ds_sv;
while (p->next !=NULL)
{
printf ("%s ",p->giatri.msv);
printf ("%s ",p->giatri.tensv);
printf ("%0.2f",p->giatri.dtb);
printf ("
");
p=p->next;
}
printf ("%s ",p->giatri.msv);
printf ("%s ",p->giatri.tensv);
printf ("%0.2f",p->giatri.dtb);
}
void main ()
{
nut_sv *ds_sv;
*ds_sv=NULL;
sinhvien sv;
int n;
printf ("nhap vao so luong sinh vien: ");
scanf ("%d",&n);
for (int i =0;i<n;i++)
{
printf ("
ma so sinh vien %d: ", i+1);
fflush(stdin);
gets (sv.msv);
printf ("
ho ten sinh vien %d: ", i+1);
fflush(stdin);
gets (sv.tensv);
printf ("
diem trung binh sinh vien %d: ",i+1);
fflush(stdin);
scanf ("%f",&sv.dtb);
if (i==0)
themvaodau (ds_sv,sv);
else
themvaocuoi(ds_sv, sv);
}
in (ds_sv);
printf ("
nhap thong tin sinh vien can chen: ");
printf ("
ma so sinh vien: ");
fflush(stdin);
gets (sv.msv);
printf ("
ho ten sinh vien: ");
fflush(stdin);
gets (sv.tensv);
printf ("
diem trung binh sinh vien: ");
fflush(stdin);
scanf ("%f",&sv.dtb);
nut_sv p = taonut();
p=*ds_sv;
if (p->giatri.dtb>=sv.dtb)
themvaodau (ds_sv, sv);
else
{
while (p->next!=NULL && p->next->giatri.dtb<=sv.dtb)
p=p->next;
if (p->next!=NULL)
themvaogiua (p, sv);
else
themvaocuoi (ds_sv,sv);
}
in (ds_sv);
}
Code:
thêm cái sắp xếp đây - nhập - sắp xếp tăng - chèn vào danh sách tăng
#include <conio.h>
#include <stdio.h>
#include <alloc.h>
typedef struct sinhvien
{
char msv[10];
char tensv [50];
float dtb;
};
typedef struct nut
{
sinhvien giatri;
nut *next;
} *nut_sv;
nut_sv taonut ()
{
nut_sv p;
p = (nut_sv) malloc(sizeof ( struct nut));
return (p);
}
void themvaodau (nut_sv *ds_sv, sinhvien sv)
{
nut_sv p;
p= taonut ();
p->giatri = sv;
p->next = *ds_sv;
*ds_sv = p;
}
void themvaocuoi (nut_sv *ds_sv, sinhvien sv)
{
nut_sv p, q;
p=taonut ();
p->giatri = sv;
q=*ds_sv;
while ( q->next !=NULL)
q=q->next;
q->next = p;
p->next = NULL;
}
void themvaogiua (nut_sv nuttruoc, sinhvien sv)
{
nut_sv p;
if (nuttruoc->next == NULL)
themvaocuoi (&nuttruoc, sv);
else
{
p=taonut ();
p->giatri=sv;
p->next = nuttruoc->next;
nuttruoc->next = p;
}
}
void sapxeptang (nut_sv *sv_ds)
{
nut_sv p1,p2;
sinhvien sv;
p1=taonut();
p2=taonut();
p1 = *sv_ds;
while (p1->next!=NULL)
{
p2=p1;
do
{
p2=p2->next;
if (p1->giatri.dtb > p2->giatri.dtb)
{
sv = p1->giatri;
p1->giatri = p2->giatri;
p2->giatri = sv;
}
}
while (p2->next!=NULL);
p1=p1->next;
}
}
void in (nut_sv *ds_sv)
{
nut_sv p;
p=*ds_sv;
while (p->next !=NULL)
{
printf ("%s ",p->giatri.msv);
printf ("%s ",p->giatri.tensv);
printf ("%0.2f",p->giatri.dtb);
printf ("
");
p=p->next;
}
printf ("%s ",p->giatri.msv);
printf ("%s ",p->giatri.tensv);
printf ("%0.2f",p->giatri.dtb);
}
void main ()
{
nut_sv *ds_sv;
*ds_sv=NULL;
sinhvien sv;
int n;
printf ("nhap vao so luong sinh vien: ");
scanf ("%d",&n);
for (int i =0;i<n;i++)
{
printf ("
ma so sinh vien %d: ", i+1);
fflush(stdin);
gets (sv.msv);
printf ("
ho ten sinh vien %d: ", i+1);
fflush(stdin);
gets (sv.tensv);
printf ("
diem trung binh sinh vien %d: ",i+1);
fflush(stdin);
scanf ("%f",&sv.dtb);
if (i==0)
themvaodau (ds_sv,sv);
else
themvaocuoi(ds_sv, sv);
}
in (ds_sv);
printf ("
DANH SACH SAU KHI SAP XEP TANG THEO DIEM TB:
");
sapxeptang(ds_sv);
in (ds_sv);
printf ("
nhap thong tin sinh vien can chen: ");
printf ("
ma so sinh vien: ");
fflush(stdin);
gets (sv.msv);
printf ("
ho ten sinh vien: ");
fflush(stdin);
gets (sv.tensv);
printf ("
diem trung binh sinh vien: ");
fflush(stdin);
scanf ("%f",&sv.dtb);
nut_sv p = taonut();
p=*ds_sv;
if (p->giatri.dtb>=sv.dtb)
themvaodau (ds_sv, sv);
else
{
while (p->next!=NULL && p->next->giatri.dtb<=sv.dtb)
p=p->next;
if (p->next!=NULL)
themvaogiua (p, sv);
else
themvaocuoi (ds_sv,sv);
}
in (ds_sv);
}
Bạn đang đọc truyện trên: AzTruyen.Top