該函數可以很好地工作,但是當我多次插入同一個姓氏時,問題就出現了。請幫忙,這是我的學校項目。對鏈接列表中的字符串進行排序
void sortList(node*head)
{
node*temp2;
node*temp3;
string tmp, tmp1, tmp2;
unsigned long long tmp3;
unsigned long long num;
for(temp2= head; temp2 != NULL; temp2 = temp2->next)
{
for(temp3 = temp2-> next; temp3 != NULL; temp3 = temp3 ->next)
{
if(temp2 ->surname > temp3 ->surname)
{
tmp = temp2 ->surname;
tmp1 = temp2 ->name;
tmp2 = temp2 ->date;
tmp3 = temp2 ->num;
temp2 ->name = temp3 ->surname;
temp2 ->surname = temp3 ->name;
temp2 ->date = temp3 -> date;
temp2 ->num = temp3 -> num;
temp3 ->surname = tmp;
temp3 ->name = tmp1;
temp3 ->date = tmp2;
temp3 ->num = tmp3;
}
}
}
}
您可以使用'的std :: swap'(或你自己的'swap'如果你不能使用它)來清理代碼。 – Jarod42 2014-08-29 09:25:08
您應該使用明智的,描述性的變量名稱,而不是'tmp','tmp1','tmp2','tmp3','temp2'和'temp3'。 – 2014-08-29 09:28:07
我看不出有任何理由推測這一點。 OP已經在他的函數體中使用了std :: string,所以沒有理由相信他以前沒有。 – Puppy 2014-08-29 09:46:57