30/09/2018, 19:17
Cho em hỏi về danh sách liên kết đơn
#include<iostream>
#include<string.h>
using namespace std;
struct GiuXe
{
char Bienso[33];
int Gio;
int Phut;
GiuXe *tiep;
};
struct Tim
{
char Bienso[33];
Tim *tiep;
};
struct Search
{
Tim *dau;
Tim *cuoi;
};
void TaoTim(Search &n)
{
n.dau=n.cuoi=NULL;
}
struct List
{
GiuXe *dau;
GiuXe *cuoi;
};
void Taolist(List &s)
{
s.dau=s.cuoi=NULL;
}
GiuXe* Thongtin()
{
GiuXe* data = new GiuXe[1];
cout<<"
Nhap bien so xe: ";
cin.ignore(1);
cin.getline(data->Bienso,33);
cout<<"
Nhap gio : ";
cin>>data->Gio;
cout<<"
Nhap phut : ";
cin>>data->Phut;
data->tiep=NULL;
return data;
}
void Themcuoi(List &s,GiuXe *data)
{
if(s.dau==NULL)
{
s.dau=s.cuoi=data;
}
else
{
s.cuoi->tiep=data;
s.cuoi=data;
}
}
void Xuat(List &s)
{
GiuXe *data;
data=s.dau;
cout<<"
================Danh sach xe================";
cout<<"
Bien so Gio gui
";
while(data!=NULL)
{
cout<<data->Bienso<<" "<<data->Gio<<":"<<data->Phut<<"
";
data=data->tiep;
}
}
void Xoa(List &s,Search &n)
{
GiuXe *data;
GiuXe *p;
data=s.dau;
Tim *t= new Tim[1];
int dem=0;
cout<<"
Nhap vao bien so xe cua xe ban : ";
cin.ignore(1);
cin.getline(t->Bienso,33);
if(strcmp(s.dau->Bienso,t->Bienso)==0)
{
s.dau=data->tiep;
delete data;
}
else
{
for(data=s.dau;data!=NULL;data=data->tiep)
{
if((data!=NULL)&&(strcmp(data->tiep->Bienso,t->Bienso)==0))
{
data->tiep=p;
data->tiep=p->tiep;
delete p;
dem++;
}
else if(dem==0)
cout<<"
Khong co xe nay.";
}
}
Xuat(s);
}
int main()
{
Search tim;
TaoTim(tim);
int n,i;
List Kha;
Taolist(Kha);
GiuXe *t;
cout<<"
Nhap suc chua cua bai giu xe: ";
cin>>n;
for(i=0;i<n;i++)
{
cout<<"
Nhap thong tin xe thu "<<i+1<<endl;
t=Thongtin();
Themcuoi(Kha,t);
}
Xuat(Kha);
Xoa(Kha,tim);
}
các anh giúp em cái hàm xoá với. e mò mãi mà không biết lỗi ở đâu
Bài liên quan
Trong hàm xóa bạn gán ngược rồi kia. Thay cho data->tiep =p thì là p= data->tiep
sửa lại nó sai hơn nữa a ơi.
Ở trong câu lệnh if bạn sửa lai fai là data->tiep != null. Và sau khi xóa xong bạn fai dung lenh break để thoát ra vòng lặp. Con thiếu trường hop deleteTail nữa
cám ơn anh ạ. e sửa được rồi