30/09/2018, 23:11
- Mọi người giúp em với ạ , Em sai chỗ hàm void NhapSV(LIST &l). Cái chỗ đưa dữ liệu vào node đó ạ
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
struct sv
{
char hoten[30];
char tuoi[10];
char que[20];
char msv[10];
float diem;
struct sv *pNext;
};
typedef struct sv SV;
struct list
{
SV *pHead;
SV *pTail;
};
typedef struct list LIST;
void Init(LIST &l)
{
l.pHead = l.pTail = NULL;
}
SV *Get(char hoten[], char tuoi[], char que[], char msv[], float diem)
{
SV *p = new sv;
if (p == NULL)
{
return NULL;
}
else
{
strcpy(p->hoten, hoten); // sao chép chuỗi.
strcpy(p->tuoi, tuoi);
strcpy(p->que, que);
strcpy(p->msv, msv);
p->diem = diem;
p->pNext = NULL;
return p;
}
}
void ThemDau(LIST &l, SV *p)
{
if (l.pHead == NULL)
{
l.pHead = l.pTail = NULL;
}
else
{
p->pNext = l.pHead;
l.pHead = p;
}
}
void ThemCuoi(LIST &l, SV *p)
{
if(l.pHead == NULL)
{
l.pHead = l.pTail = NULL;
}
else
{
l.pTail->pNext = p;
l.pTail = p;
}
}
// Them 1 phan tu p vào sau phần tử Q trong danh sách.
void ThemPhanTuSauQ(LIST &l, SV *p, SV *q)
{
if(q != NULL)
{
p->pNext=q->pNext; //quăng dây trỏ đến sau phần tử q.
q->pNext = p;// lưu p vào sau q.
if(q == l.pTail)
{
l.pTail = q;
}
}
else
{
ThemDau(l,p);
}
}
void NhapSV(LIST &l)
{
SV *p;
int n,i;
printf("Nhap so luong sinh vien");
scanf("%d",&n);
fflush(stdin);
Init(l);
for(i=1;i<=n;i++)
{
printf("
Nhap vao thong tin sinh vien thu %d : ",i);
printf("
Nhap vao ho ten : ");
gets(p->hoten);
fflush(stdin);
printf("
Nhap vao tuoi : ");
gets(p->tuoi);
fflush(stdin);
printf("
Nhap vao Que Quan : ");
gets(p->que);
fflush(stdin);
printf("
Nhap vao Ma Sinh Vien : ");
gets(p->msv);
fflush(stdin);
printf("
Nhap vao diem : ");
scanf("%f",&p->diem);
fflush(stdin);
SV *p = Get(p->hoten,p->tuoi,p->que,p->msv,p->diem);
ThemCuoi(l,p);
}
}
void Xuat(LIST l)
{
printf("%-20s %-10s %-15s %-5s %-8s", "Ten","Tuoi", "Que Quan","MSV","Diem");
for (SV *p = l.pHead; p != NULL ; p=p->pNext)
{
printf("%-20s %-10s %-15s %-5s %-8f", p->hoten,p->tuoi,p->que,p->msv,p->diem);
}
}
int main(int argc, char* argv[])
{
LIST l;
NhapSV(l);
Xuat(l);
getch();
return 0;
}
- Cú pháp để đưa dữ liệu vào Node CỦA Ngôn Ngữ C là sao ạ. ai giúp em chỗ hàm NhapSV với.
Bài liên quan
Cả 2 hàm trên đều sai cùng 1 nơi.
bạn viết thế này, trong trường hợp list mới khởi tạo thì phần tử mới sẽ biết phải thêm vào đâu. Theo mình thì nên sửa lại thành.
ok thanks ban, vay cai ham NhapSV cua minh khong sai ha~