我有一个我必须创建的链接列表的问题。 程序应该接受用户输入的名称,然后将它们放入链接列表中。这个列表应按字母顺序排序,所以当添加一个新节点时,它应该到正确的位置。链接的有序名称列表C++
我的代码看起来是这样的,现在:
struct node
{
string info;
node *next;
};
class Passenger
{
private:
node* pname;
public:
void insert(string);
Passenger();
};//closes Passenger class
Passenger::Passenger()
{
pname = new node;
pname -> info = "ABC";
pname -> next = NULL;
}
void Passenger::insert(string name)
{
node *temp, *p, *s;
p = pname;
s = pname;
temp = new node;
temp->info = name;
if(p-> info == "ABC") //new pname linked list, put temp at the front
{
p->info = name;
p->next = NULL;
}
//if there is already one in the list
while(s != NULL)
{
cout<<"inside while loop"<<endl;
//if new node goes to left
if(temp->info < s->info)
{
temp->next = p;
pname = temp;
}//closes if
if(temp->info > s->info)
{
if(p->next != NULL)
{
s = s->next;
if(s->next == NULL)
s->next = temp;
}//closes if
}//closes if
p = p->next;
s = s->next;
}//closes while
我真的不知道如何去改变它,它的作品。当列表中有一个节点,然后添加第二个节点时,我完成了它。但是,如果有2个节点已经存在,我不知道如何排序在第三或第四个节点。
戴夫
http://codereview.stackexchange.com/questions/26839/linked-list-sorting-algorithm - 这可能是一个很好的开始。 – David