【发布时间】:2014-08-29 09:19:49
【问题描述】:
该功能工作正常,但是当我多次插入同一个姓氏时,问题就出现了。请帮忙,这是我的学校项目。
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,如果你不能使用它)来清理代码。 -
你应该使用合理的、描述性的变量名,而不是
tmp、tmp1、tmp2、tmp3、temp2和temp3。 -
我认为没有理由这样假设。 OP 在他的函数体中似乎使用了 std::string,所以没有理由相信他以前没有。
标签: c++ string sorting linked-list