typedef struct SieuDl // l nhỏ
{
struct SieuDl(KieuKhoa khoa,KieuGiaTri giaTri)
{
this->khoa=khoa;
this->giaTri=giaTri;
tiep=NULL;
}
KieuKhoa khoa;
KieuGiaTri giaTri;
struct SieuDL *tiep; // l lớn
}SIEUDL;
Muốn nutMoi->tiep=bangBam[viTri]; Tai đây có loi la:'=' : cannot convert from 'struct BangBam::them::SIEUDL *' to 'struct SieuDL *'
có thể sửa giúp mình dc khong?
C++ Code:
#include<iostream> #include<conio.h> #define KICHTHUOC_MD 101 typedef int KieuKhoa; typedef int KieuGiaTri; typedef struct SieuDl { struct SieuDl(KieuKhoa khoa,KieuGiaTri giaTri) { this->khoa=khoa; this->giaTri=giaTri; tiep=NULL; } KieuKhoa khoa; KieuGiaTri giaTri; struct SieuDL *tiep; }SIEUDL; //BANG BAM class BangBam { private: int kichThuoc ; int hamBam(KieuKhoa); SIEUDL **bangBam; public: BangBam(int kichThuoc=KICHTHUOC_MD); ~BangBam(); void them(KieuKhoa,KieuGiaTri); void xoa(KieuKhoa); SIEUDL *tim(KieuKhoa); void huyBangBam(); void duyetBangBam(); }; #include<iostream.h> #include<conio.h> #include"bangBam.h" BangBam::BangBam(int kichThuoc) { this->kichThuoc=kichThuoc; SIEUDL **bangBam=new SIEUDL*[this->kichThuoc]; for(int i=0;i<this->kichThuoc;i++) bangBam[i]=NULL; } /////////HAM HUY BangBam::~BangBam() { huyBangBam(); } ///////THEM MOT PHAN TU VAO BANG BAM void BangBam::them(KieuKhoa khoa,KieuGiaTri giaTri) { SIEUDL *nutMoi=new SIEUDL(khoa,giaTri); int viTri=hamBam(khoa); if(bangBam[viTri]==NULL)//chua co phan tu nao trong vi tri nay bangBam[viTri]=nutMoi; else// truong hop xay ra dung do { [B] nutMoi->tiep=bangBam[viTri];[/B] bangBam[viTri]=nutMoi; } } //////HAM BAM int hambam(KieuKhoa khoa) { return khoa%2; } //////TIM MOT PHAN TU CO KHOA khoa SIEUDL *BangBam::tim(KieuKhoa khoa) { int viTri=hamBam(khoa); SIEUDL *p=bangBam[viTri]; while (p!=NULL) { if(p->khoa==khoa) return p; else p=p->tiep; } return NULL; } ///////XOA MOT PHAN TU TRONG BANG BAM void BangBam::xoa(KieuKhoa khoa) { SIEUDL *p=tim(khoa); if(p==NULL) else { int viTri=hamBam(khoa); SIEUDL *dau=bangBam[viTri]; if(p==dau) bangBam[viTri]=p->tiep; else { //tim truoc p SIEUDL *q=dau; while(q->tiep!=p) q=q->tiep; q->tiep=p->tiep; } delete p; } } ////////HUY BANG BAM void BangBam::huyBangBam() { for(int i=0;i<this->kichThuoc;i++) { SIEUDL *dau=bangBam[i]; SIEUDL *tam; while (dau!=NULL) { tam=dau; dau=dau->tiep; delete tam; } } } ///////DUYET BAMG BAM void BangBam::duyetBangBam() { for(int i=0;i<this->kichThuoc;i++ ) { SIEUDL *dau=bangBam[i]; SIEUDL *p=dau; while(p!=NULL) { p=p->tiep; } } }
typedef struct SieuDl // l nhỏ
{
struct SieuDl(KieuKhoa khoa,KieuGiaTri giaTri)
{
this->khoa=khoa;
this->giaTri=giaTri;
tiep=NULL;
}
KieuKhoa khoa;
KieuGiaTri giaTri;
struct SieuDL *tiep; // l lớn
}SIEUDL;
Ví phỏng đường đời bằng phẳng cả, anh hùng hào kiệt có hơn ai.
Nguyễn Công Trứ
Cam on ban nhieu
Đúng là bất cẩn:
Cho mình hỏi tiếp:
error C2011: 'SieuDL' : 'struct' type redefinition
'BangBam' : 'class' type redefinition
Tại sao vậy các bạn?
file trên của bạn tên gì
nếu đó là file .h thì có lẽ sẽ báo lỗi như bạn mô tả
Ví phỏng đường đời bằng phẳng cả, anh hùng hào kiệt có hơn ai.
Nguyễn Công Trứ
Từ đầu đến #include<iostream.h>.. là file .h còn lại là file .cpp
bạn nên thêm phần in đậm vào .h
#ifndef _TEN_FILE_H
#define _TEN_FILE_H
//...nội dung file .h
#endif
Ví phỏng đường đời bằng phẳng cả, anh hùng hào kiệt có hơn ai.
Nguyễn Công Trứ
Cam on nhieu ban oi!!!!!!giờ lại xay ra lổi này:
error LNK2005: "public: __thiscall BangBam::BangBam(int)" (??0BangBam@@QAE@H@Z) already defined in bangBam.obj
main.obj : error LNK2005: "public: __thiscall BangBam::~BangBam(void)" (??1BangBam@@QAE@XZ) already defined in bangBam.obj
main.obj : error LNK2005: "public: void __thiscall BangBam::them(int,int)" (?them@BangBam@@QAEXHH@Z) already defined in bangBam.obj
main.obj : error LNK2005: "int __cdecl hambam(int)" (?hambam@@YAHH@Z) already defined in bangBam.obj
main.obj : error LNK2005: "public: struct SieuDL * __thiscall BangBam::tim(int)" (?tim@BangBam@@QAEPAUSieuDL@@H@Z) already defined in bangBam.obj
main.obj : error LNK2005: "public: void __thiscall BangBam::xoa(int)" (?xoa@BangBam@@QAEXH@Z) already defined in bangBam.obj
main.obj : error LNK2005: "public: void __thiscall BangBam::huyBangBam(void)" (?huyBangBam@BangBam@@QAEXXZ) already defined in bangBam.obj
main.obj : error LNK2005: "public: void __thiscall BangBam::duyetBangBam(void)" (?duyetBangBam@BangBam@@QAEXXZ) already defined in bangBam.obj
bangBam.obj : error LNK2001: unresolved external symbol "private: int __thiscall BangBam::hamBam(int)" (?hamBam@BangBam@@AAEHH@Z)
main.obj : error LNK2001: unresolved external symbol "private: int __thiscall BangBam::hamBam(int)" (?hamBam@BangBam@@AAEHH@Z)
Debug/bangBam.exe : fatal error LNK1120: 1 unresolved externals
có phải bạn đã viết như thế này
#include bangBam.cpp
ở file nào đó trong project của bạn, có lẽ trong file main.cpp
phát biểu đó sẽ dẫn đến lỗi trên
Ví phỏng đường đời bằng phẳng cả, anh hùng hào kiệt có hơn ai.
Nguyễn Công Trứ
ban xem PM nhe
Ví phỏng đường đời bằng phẳng cả, anh hùng hào kiệt có hơn ai.
Nguyễn Công Trứ