30/09/2018, 20:57

Hoán vị 2 phần tử trong linked list

chào mọi người, minh cài đặt thuật toán sắp xếp trong linked nhưng hàm của mình bị lỗi và mình sửa nhưng vẫn không được, đây là code của mình

void swap(int &a, int &b)
{
	int tmp = a;
	a = b;
	b = tmp;
}

void interchangeSort(List &l)
{
	Node *tmp = l.pHead;
	Node *cur = l.pHead->pNext;
	for (; tmp->pNext != NULL; tmp = tmp->pNext)
	{
		for (; cur != NULL; cur = cur->pNext)
		{
			if (tmp->Data > cur->Data)
			{
				swap(tmp->Data, cur->Data);
			}
		}
	}
}

mong mọi người giúp đõ.

cescnghia viết 23:05 ngày 30/09/2018

bạn sử dụng hàm swap này nha, mà bạn đưa hết code của bạn lên đây luôn đc ko ?

void swap (int* a, int* b){
	int tmp = *a;
	*a = *b; 
	*b = tmp;
}
Lâm Khả Hân viết 22:58 ngày 30/09/2018

mình chỉ định hoán vị data thôi mà bạn, data của mình kiểu int mà bạn
đây là code toàn bài của mình
http://codepad.org/DGkHwHps

Sáng Béo viết 23:08 ngày 30/09/2018

Sửa hàm Sort

Code ở đầu topic thì sửa thế này:

        Node *tmp = l.pHead;
	for (; tmp != NULL; tmp = tmp->pNext)
	{
		Node *cur = tmp->pNext;
		for (; cur != NULL; cur = cur->pNext)
		{
			if (tmp->Data > cur->Data)
			{
				swap(tmp->Data, cur->Data);
			}
		}
	}

Code trong link này

mình chỉ định hoán vị data thôi mà bạn, data của mình kiểu int mà bạn
đây là code toàn bài của mình
http://codepad.org/DGkHwHps

thì sửa thế này

	for (Node *tmp = l.pHead; tmp != l.pTail; tmp = tmp->pNext)
	{
		for (Node *cur = tmp->pNext; cur != NULL; cur = cur->pNext)
		{
			if (tmp->Data > cur->Data)
				swap(tmp->Data, cur->Data);
		}
	}

Ngoài lề chút… ý kiến cá nhân: mình nghĩ là không nên cho cả phần tử 0 vào. nên check a = 0 trước khi thêm node.

Lâm Khả Hân viết 22:59 ngày 30/09/2018

mình đã hiểu, cảm ơn bạn đã góp ý

Bài liên quan
0