30/09/2018, 17:03
Danh sách liên kết đơn Sinh viên
Em mới viết đến đây, debug thì nó chạy tá lả. Mọi người giúp em tìm lỗi với !
#include <stdio.h>
#include <conio.h>
#include <string.h>
struct SinhVien
{
int MSSV;
char HoTen[30];
float DiemTB;
};
void NhapSV(SinhVien &sv)
{
printf("Nhap ma so sinh vien: ");
scanf("%d",&sv.MSSV);
printf("Nhap ho ten sinh vien: ");
fflush(stdin);
gets(sv.HoTen);
printf("Nhap diem TB cua sinh vien: ");
scanf("%f",&sv.DiemTB);
}
void XuatSV(SinhVien sv)
{
printf("
MSSV: %d",sv.MSSV);
printf("
Ho va ten: ");
puts(sv.HoTen);
printf("Diem TB: %.2f",sv.DiemTB);
}
struct Node
{
SinhVien Data;
Node *Next;
};
struct List
{
Node *Head;
Node *Tail;
};
void CreateList(List &l)
{
l.Head=l.Tail=NULL;
}
Node* CreateNode(SinhVien sv)
{
Node *p = new Node;
p->Data = sv;
p->Next = NULL;
return p;
}
void AddHead(List &l, SinhVien sv)
{
Node *p = CreateNode(sv);
if(l.Head==NULL)
l.Head=l.Tail=p;
p->Next=l.Head;
l.Head=p;
}
void XemList(List l)
{
Node *p = l.Head;
while(p!=NULL)
{
XuatSV(p->Data);
printf("
");
p=p->Next;
}
}
void main()
{
List l;
CreateList(l);
SinhVien sv1, sv2, sv3;
NhapSV(sv1);
NhapSV(sv2);
NhapSV(sv3);
AddHead(l,sv3);
AddHead(l,sv2);
AddHead(l,sv1);
XemList(l);
getch();
}
Bài liên quan
Em so sánh với code ở đây xem:
Dropbox - Error
Dropbox is a free service that lets you bring your photos, docs, and videos anywhere and share them easily. Never email yourself a file again!
AddHead
trongif == NULL
thì return luôn, còn không thìhead-> next = head
nên bị lặp vô hạnBạn nói đúng, mình đã thực hiện luôn 2 dòng phía dưới lệnh l.Head=l.Tail=p; Lẽ ra phải rẽ nhánh, mình quên dùng else