C++按排序顺序添加到链接列表

Ton*_*ony 5 c++ linked-list list

嗨我有一个使用结构的链表.现在我得到它在最后添加每个元素.但是,我想根据ID按排序顺序添加每个元素.该结构有两个元素:字符串名称和长ID.

node* temp = new node;
temp->name = nameRead;
temp->id = idRead;

//check if first item, if so add as head
if(head == NULL)
{
    head = temp;
}
else
{
   node* temp2 = head;
   while(temp2->next != NULL)
   {
      temp2 = temp2->next;
   }
   temp2->next = temp;
}
Run Code Online (Sandbox Code Playgroud)

She*_*aig 12

node* temp = new node;
temp->name = nameRead;
temp->id = idRead;

node* temp2 = head;
node** temp3 = &head;
while(temp2 != null && temp2->id < temp->id)
{
   temp3 = &temp2->next;
   temp2 = temp2->next;
}
*temp3 = temp;
temp->next = temp2;
Run Code Online (Sandbox Code Playgroud)

编辑:说明:'temp3'指针指向'temp'需要去的地方.将temp2初始化为head,并保持循环直到我们到达列表的末尾,或者直到temp2的id> = temp而不是temp的id.在循环的每次迭代中,前进temp3和temp2.

在循环结束时,'temp3'将保存指针所在的地址.因此,指定*temp3指向temp,并指定temp-> next指向temp2(此时将为null,或者指向id大于temp-> id的项目).