Xin chào !

Mình đang làm sort trong Clist của MFC ( Sort sắp xếp theo thứ tự từ 0 -> 9 ), nhưng không hiểu sao khi sort nó lại double dữ liệu và sort sai, mong mọi người chỉ cho mình chỗ chưa hợp lý ở đây với. Xin cảm ơn

Khai báo struct
Code:
struct TPerson
{
	CString		Name;
	int			Sex;
	int			Married;
};
Clist

Code:
CList<TPerson*, TPerson*>		m_lPerson;
Code nút sort
Code:
void Ctest6Dlg::OnBnClickedSort()
	{

		int idata,irow;
		for(POSITION pos1 = m_lPerson.GetHeadPosition(); pos1 != NULL;)
		{
			TPerson* pperson1 = m_lPerson.GetNext( pos1 );
			POSITION pos2 = m_lPerson.GetHeadPosition();
			bool inserted = false;
			while(pos2 != NULL)
			{
				POSITION pos3 = pos2;
				TPerson* pperson2 = m_lPerson.GetNext( pos2 );
				if(pperson1->Name < pperson2->Name)
				{
					m_lPerson.InsertBefore(pos3,pperson1);
					pos2 = NULL;
					inserted = true;
				}
			}
			if(!inserted) m_lPerson.AddTail(pperson1);
		}
		
		m_listControl.DeleteAllItems();
		irow = 0;

		for(POSITION posLoop=m_lPerson.GetHeadPosition(); posLoop; m_lPerson.GetNext(posLoop))
			{
				irow = 0;
				TPerson* pperson4 = m_lPerson.GetAt(posLoop);

				idata = m_listControl.InsertItem( irow++, pperson4->Name );
							
				m_listControl.SetItemText( idata, ColumSex, (pperson4->Sex == MALE) ? T_MALE : T_FEMALE );	
				m_listControl.SetItemText( idata, ColumMarries, (pperson4->Married == NOT_MARRIED) ? T_NOT_MARRIED : T_MARRIED);
							
			}
	}
Hình trước khi sort
https://uphinhnhanh.com/image/SNdt1O

Hình sau khi sort
https://uphinhnhanh.com/image/SNdb7C

Mong mọi người giúp đỡ ạ !

- - - Nội dung đã được cập nhật ngày 20-02-2019 lúc 11:04 AM - - -

Không có ai giúp em với ạ :(