Tại sao kết quả 2 hàm không được in ra màn hình?

Tại sao nó không xuất ra màn hình của hàm Cau3 và hàm Cau3DQ được ạ? và tìm tổng của hai node liên tiếp là lớn nhất (vòng lặp và đệ quy) ạ?

#include<iostream>
using namespace std;
struct Nut
{
	int Dulieu;
	Nut *tiep;
};
//tao nut co duliet la x, truong tiep la con tro p, tra ve dia chi cua nut do
Nut *tao(int x, Nut *p)
{
	Nut *q = new Nut;
	q->Dulieu = x;
	q->tiep = p;
	return q;
}
void taoDS(Nut *&L)
{
	L = tao(3,tao(7,tao(12,tao(9,tao(8,tao(4,tao(1,tao(2,tao(5,tao(10,NULL))))))))));
}
void duyet(Nut *l)
{/*
	Nut *p=l;
	whilet(p!=NULL){
		cout<<p->Dulieu<<" -->";
		p=p->tiep;
	}
	cout<<"NULL\n";
	*/
	for(Nut *p=l; p!=NULL; p=p->tiep)
		cout<<p->Dulieu<<" --> ";
	cout<<"NULL\n";
}

int Cau3(Nut *l)
{
	int max = l->Dulieu;
	Nut *q =l;
	while(q!=NULL)
	{	if(max +q->tiep->Dulieu < q->tiep->Dulieu + q->tiep->tiep->Dulieu)
		{
			max=q->tiep->tiep->Dulieu + q->tiep->Dulieu;
		}
		q = q->tiep;
	}
	return max;
}

int Cau3DQ(Nut *l)
{
	  
}

int Cau8(Nut *l)
{
	Nut *q=l;
	while(q!=NULL)
	{	if(q==NULL || q->tiep==NULL)
			return true;
		else if(q->Dulieu < q->tiep->Dulieu)
			return true;
		else return false;
	}
	
}

int Cau8DQ(Nut *l)
{
	if(l==NULL || l->tiep==NULL)
		return 1;
	else if(l->Dulieu > l->tiep->Dulieu)
		return 0;
	else
		return Cau8DQ(l->tiep);
}
int main()
{
	Nut*first;
	taoDS(first);
	duyet(first);
	cout<<"Tinh Khong giam cua danh sach:"<<Cau8(first);
	cout<<"Tinh Khong giam cua danh sach:"<<Cau8DQ(first);
	cout<<"Tinh tong hai node lien tiep la lon nhat: "<<Cau3(first);
	cout<<"Tinh tong hai node lien tiep la lon nhat: "<<Cau3DQ(first);
	return 0;
}

Tại sao nó không xuất ra màn hình của hàm Cau3 và hàm Cau3DQ được ạ?

thấy Cau3DQ trống không mà nhỉ :thinking:

5 Likes

exit code 3221225477 (0xC0000005) Lỗi truy xuất.
Trong hàm Cau3() bạn có một thao tác truy xuất sai. Như gọi giá trị (toán tử ->) từ con trỏ NULL chẳng hạn.

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