Lỗi variable or field declared void và was not declared in this scope

Em viết theo giáo viên chỉ nhưng khi chạy trên dev c++ thì gặp lỗi như này ạ

dưới dây là bài code của em, thầy em dùng visual studio 2013 ạ

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include<time.h>

//Khai bao du lieu
typedef int item;
 
 struct node {
 	item info; // luu thong tin 
	node *next; // tro toi node phia sau 
 }; 
 
 struct list {
     node *dau;
     node *cuoi;
 };
 
 //Khai bao nguyen mau ham/ goi ham truoc
 
 node *taonut (item x);
 void hiennut (node *p);
 void empty (list sl);
 void list (list &sl);
 void themdau (list &sl, node *p);
 void hienlist (list sl);
 void taolistbangtay (list &sl);
 void taolistngaunhien (list &sl);
 
 
 //Dinh nghia ham
 
 node *taonut (item x) {
 	node *p=new node;
	if( p==NULL) 
	{
	 printf("Khong the cap phat node, nhap du lieu");
	 getch();
	 return NULL; 
	}	 
	p->info=x;
	p->next=NULL;
	return p; 
 } 
 
 // Hien node
 
 void hiennut (node *p)
 {
 	printf("%4d", p->info);
	 
 }
 
 void empty (list sl) {
     if(sl.dau==NULL)
     return 1;
     else
     return 0;
 }
 
 void list (list &sl) {
     sl.dau=sl.cuoi=NULL;
 }

   void themdau (list &sl, node *p) //Lỗi ở đây ạ, phải khai báo int mới đúng

{
     if(p==NULL) 
     {
         return 0;//khogn ton tai p, them that bai
     }
     if(empty(sl)==1)
     {
         sl.dau=sl.cuoi=p;
     }
     else //dsach khong rong
     {
         p->next=sl.dau;
         sl.dau=p;
     }
     return 1;// them p thanh cong
 }

 void hienlist (list sl) {
     if(empty(sl)==1)
     {
         printf("Danh sach rong");
         return;
     }
     node *p=sl.dau;
     while (p!=NULL)
     {
         hiennut(p);
         p=p->next;
     }
 }
 
  void taolistbangtay (list &sl);
  {
      int n;
      do
      {
          printf("So node cua danh sach: ");
          scanf("%d", &n);
      } while (n<=0);
      
      list(sl);
      for (int i=0; i<n; i++)
      {
          item x;
          printf("Nhap gia tri node moi: ");
          scanf("%d", &x);
          
          node *p=taonut(x);
          themdau(sl, p);
      }
  }
 void taolistngaunhien (list &sl);
 
 int main ()
 {
/*	item X=5;
	node *P= taonut(X);
	printf("Nut vua tao la: ");
	hiennut(P);
	getch();
	return 0; 
	TAO NUT BANG NHAP TU CODE
 
 list SL;
 item X;
 printf("Ban hay cho biet gia tri node them vao dau: ");
 scanf("%d", &X);
 P= taonut(X);
 themdau(SL,P);
 THEM DAU DANH SACH 1 NODE
 */
 taolistbangtay(SL);
 printf("\nNoi dung danh sach: ");
 hienlist(SL);
 getch();
 }

Có chắc là viết đúng theo giáo viên không

Em biết sai ở đâu r ạ, làm phiền a quá:((

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?