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

sytay viết 21:31 ngày 30/09/2018

Trong hàm xóa bạn gán ngược rồi kia. Thay cho data->tiep =p thì là p= data->tiep

hon viết 21:19 ngày 30/09/2018

sửa lại nó sai hơn nữa a ơi.

sytay viết 21:28 ngày 30/09/2018

Ở 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

hon viết 21:22 ngày 30/09/2018

cám ơn anh ạ. e sửa được rồi

Bài liên quan
0