Mình mới học về danh sách liên kết nên chưa được hiểu rõ lắm về một chương trình hoàn chỉnh để nhập và xuất 1 DSLK. Mình cần nhập vào thông tin của một dslk sinh viên với thông tin của sinh viên là mssv và họ tên của sinh viên đó nhưng mà mình làm hoài chưa được. Có bạn nào biết hướng dẫn giúp mình nhé. Code của mình là như thế này, nếu bạn nào biết thì sửa giúp nhé. Thanks!.
Mình viết Code trên môi trường VC++ Console.
Code:
#include "stdafx.h"
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
#include<stdlib.h>
typedef struct SinhVien
{
int maso;
char hoten[31];
}SV;
typedef struct SinhVienNode
{
SV info;
struct SinhVienNode *pNext;
}SVNode;
typedef struct SinhVienList
{
SVNode *pHead;
SVNode *pTail;
}SVList;
SVNode *TaoSVNode(SV x)
{
SVNode *p;
p = new SVNode;
if(p==NULL)
{
printf("Khong cap phat duoc vung nho. Ket thuc!");
getch();
exit(0);
}
p->info=x;
p->pNext=NULL;
return p;
}
void NhapSinhVien(SV &x)
{
printf("Nhap ma so:");
scanf("%d",&x.maso);
printf("Nhap ho ten:");
gets(x.hoten);
}
void ThemDau(SVList &l,SVNode *ele)
{
if(l.pHead==NULL)
{
l.pHead=ele;
l.pTail=l.pHead;
}
else
{
ele->pNext=l.pHead;
l.pHead=ele;
}
}
void xuat(SVList l)
{
SVNode *p=l.pHead;
while (p)
{
printf("%d\t%s\n",p->info.maso,p->info.hoten);
p = p -> pNext;
}
}
void main()
{
char c = getch();
SV x;
SVNode *p;
SVList l;
l.pHead = NULL;
l.pTail = NULL;
printf("Nhap 1 de them\n");
printf("Nhap 0 de thoat\n");
switch(c)
{
case '1':
NhapSinhVien(x);
p = TaoSVNode(x);
ThemDau(l,p);
break;
}while(c!='0');
xuat(l);
}
Các bạn coi thử xem chương trình sai ở đâu giúp mình nhé. Tại chương trình này mình cũng ghép từ các code khác nhau và có sửa lại theo ý mình một chút nên trông nó khập khiễng thế đấy.