01/10/2018, 00:43
Danh sách liên kết đơn. quản lí sinh viên
Mình mới học ctsl, đang làm cái bài tập về quản lí danh sách sinh viên, code của mình như thế này nhưng chạy lại bị lỗi windows stopped has working. mọi người xem giúp với, cảm ơn.
#include <iostream>
#include <string>
using namespace std;
typedef struct SinhVien{
char maSV[8];
char HoTen[40];
char Lop[10];
float diemTB;
}SV;
typedef struct NodeSV{
SV info;
NodeSV *next;
}Node;
typedef struct ListSV{
Node *Tail;
Node *Head;
}List;
//khao tao mot list rong
void CreateList(List &l)
{
l.Head = l.Tail = NULL;
}
Node *GetNode(SV a)
{
Node *p = new Node;// cap phat bo nho cho node
if (p == NULL)
{
return NULL;
}
p->info = a;
p->next = NULL;
return p;
}
void AddHead(List &l, Node *p)
{
if (l.Head == NULL)
{
l.Head = l.Tail = p;
}
else{
p->next = l.Head;
l.Head = p;
}
}
void AddTail(List &l, Node *p)
{
if (l.Head == NULL)
{
l.Head = l.Tail = p;
}
else{
l.Tail->next = p;
l.Tail = p;
}
}
void AddAfterq2(List &l, Node *p, Node *q)
{
if (q != NULL)
{
p->next = q->next;
q->next = p;
if (l.Tail == q)
{
l.Tail = q;
}
else
AddHead(l, q);
}
}
void InPut(List &l, int n)
{
CreateList(l);//khoi tao list moi
for (int i = 1; i <= n; i++)
SV a;
cout << "ID : "; cin >> a.maSV;
cout << "Full Name : "; cin >> a.HoTen;
cout << "Class : "; cin >> a.Lop;
cout << "Score Avg : "; cin >> a.diemTB;
Node *p = GetNode(a);
AddHead(l, p);
}
}
// Ham in danh sach sinh vien
void OutPut(List l)
{
for (Node*p = l.Head; l.Head != NULL; p = p->next)
{
cout << "Student ID : " << p->info.maSV;
cout << "Full name : " << p->info.HoTen;
cout << "Class : " << p->info.Lop;
cout << "Score Avg : " << p->info.diemTB;
}
}
int main()
{
List l;
int n = 2;
InPut(l, n);
OutPut(l);
return 0;
}
Bài liên quan
hàm void OutPut(list l) sửa lại điều kiện câu lệnh for như sau: p != NULL , trong bài ghi l.Head != NULL là sai
Bạn chưa khởi tạo danh sách liên kết
int main()
{
List l;
CreateList(l);
…
}
Biến SV a ở hàm input, bạn phải dùng con trỏ để khi nó trả kết quả về thì dữ liệu vẫn được lưu trong bộ nhớ. Khai báo biến thường để trả về, khi kết thúc hàm biến không còn trong bộ nhớ nữa