Fix lỗi khai báo danh sách liên kết đơn trong cấu trúc dữ liệu

E viết mỗi nhập xuất dslk đơn tróng 1 file riêng nhưng khi viết đến file KetQua nó lại báo lỗi [Error] variable or field ‘Init’ declared void và k hiểu đc DS dù e đã khai báo

đây là đề của e :

  • Mỗi khoa (Khoa) có một mã khoa (maKhoa) để quản lý, một tên khoa (tenKhoa) và ghi nhận năm thành lập khoa (namThanhLap).
  • Mỗi khóa học (KhoaHoc) có một mã (maKhoaHoc) để quản lý, năm bắt đầu khoá học (namBD) và năm kết thúc khóa học (namKT).
  • Mỗi sinh viên (SinhVien) có một mã (maSV) để quản lý, họ và tên sinh viên (hoTen), năm sinh (namSinh), giới tính (gioiTinh) và thuộc về một lớp nào đó (xác định bởi maLop).
  • Mỗi chương trình học (ChuongTrinh) có một mã (maCTr) để quản lý và một tên chương trình (tenCTr).
  • Mỗi môn học (MonHoc) có một mã (maMH) để quản lý, tên môn học (tenMH) và thuộc về một khoa nào đó (xác định bởi maKhoa).
  • Mỗi kết quả (KetQua) thi ghi nhận điểm (diem) của một sinh viên làm bài thi cho 1 môn học nào đó ở một lần thi cụ thể (lanThi, một sinh viên có thể thi một môn nào đó nhiều lần).
  • Thông tin giảng dạy (GiangDay) cho biết một môn học được giảng dạy cho một khoa nào đó trong một chương trình nào đó tại một học kỳ (hocKy) và năm học (namHoc) cụ thể. Trong chương trình này, môn học đó được quy định số tiết lý thuyết và thực hành cụ thể và tương đương với bao nhiêu tín chi (soTinChi bao gồm cả tín chi lý thuyết lẫn thực hành).
  • Một lớp học (LopHoc) có một mã lớp (maLop) để quản lý, thuộc về một khoa nào đó, mở ra cho một khóa học nhất định, trong một chương trình nhất định và có một số thứ tự (stt) đánh tăng dần cho các lớp cùng khoá, cùng khoa và cùng chương trình
#include <stdio.h>
#include <malloc.h>
#include <conio.h>
#include <stdlib.h>
#include <iostream>

struct ttKetQua
{
	int diem;
 	int lanthi;
 	char maMH[9];
 	char maSo[9];
};
typedef struct ttKetQua kq;
struct ttNode
{
	kq data;
	struct ttNode* pNext;
};
typedef struct ttNode Node;
struct ttDS
{
	Node *pLeft, *pRight;
};
typedef struct ttDS ds;

void Init(DS &ds); //Khoi tao danh sach
int IsEmpty(DS ds); //Kiem tra danh sach rong
Node *CreateNode(kq x); //Tao node chuong trinh
void AddLeft(DS &ds, Node *pNew); //Them pNew vao dau
void InputKQ(kq &kqa); //Nhap chuong trinh
void OutputKQ(kq kqa); //Xuat chuong trinh
void Input(DS &ds); //Nhap danh sach
void Output(DS ds); //Xuat danh sach

void Init(DS &ds)
{
	ds.pLeft = ds.pRight = NULL;
}
int IsEmpty(DS ds)
{
	if (ds.pLeft == NULL)
		return 1;
	return 0;
}
Node* CreateNode(kq x)
{
	Node* pNew = (Node*)malloc(sizeof(Node));
	if (pNew == NULL)
	{
		printf("Loi cap phat!");
		getch();
		exit(0);
	}
	pNew->data = x;
	pNew->pNext = NULL;
	return pNew;
}
void AddLeft(DS &ds, Node* pNew)
{
	if (IsEmpty(ds))
	{
		ds.pLeft = ds.pRight = pNew;
	}
	else
	{
		pNew->pNext = ds.pLeft;
		ds.pLeft = pNew;
	}
}
void InputKQ(kq &x)
{
	fflush(stdin);
	printf("- So Diem = ");
	gets(x.diem);
	printf("- So Lan Thi = ");
	gets(x.lanthi);

}
void OutputKQ(kq x)
{
	printf(">> So Diem : %s\n", x.diem);
	printf(">> So Lan Thi : %s\n", x.lanthi);
	
}
void Input(DS &ds)
{
	int tt = 1;
	kq x;
	Init(ds);
	do 
	{
		printf("Nhap thong tin chuong trinh :\n");
		InputKQ(x);
		Node* pNew = CreateNode(x);
		AddLeft(ds, pNew);
		printf("Tiep tuc nhap (0/1)?: ");
		scanf("%d", &tt);
		if(tt==0)
			break;
	} while(1);
}
void Output(DS ds)
{
	Node *p = ds.pLeft;
	while(p)
	{
		OutputKQ(p->data);
		printf("\n");
		p = p->pNext;
	}
}
int main()
{
	DS ds;
	
	Input(ds);
	//printf("*** Danh sach sinh vien:\n");
	printf("*** Danh sach chuong trinh : \n");
	Output(ds);
	 
	return 0;
}
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?