0
我想通过节点struct(age)内的int值重新排序我的DLL。它工作时,我直接访问int,但我试图交换整个节点,这样我就不必在列表重新排序时交换结构中的每个变量。双链表列表节点交换问题
void DLL::ReOrg(node* head, int DLL_Size)
{
node* temp = head;
int holder;
for(int j = 0; j < DLL_Size; j++)
{
while(temp != NULL)
{
if (temp->next != NULL && (temp->age < temp->next->age))
{
holder = temp->age;
temp->age = temp->next->age;
temp->next->age = holder;
}
else
temp = temp->next;//increment node
}
temp = head;
}
}
这个工作,但是当我试着这样做:
node* holder;
...
holder = temp;
temp = temp->next;
temp->next = holder;
我的程序编译和运行一个空白屏幕。任何指导将不胜感激。我猜测只需要交换所有变量(并不是很多),但我想让代码更清晰。谢谢。
我猜我最初的环节失去了指针。我试着像你说的那样加上prev-> next&next-> next-> prev,但它仍然是空白的。我讨厌链接列表 – GeorgeCostanza
@GeorgeCostanza添加了一些示例重新链接代码 –
好吧我几乎在那里,但由于某种原因节点在ReOrg期间迷路了。这里有一张图片来展示正在发生的事情。 http://i.imgur.com/U3BGstr.png感谢您的时间。我有头和尾指针指向第一个和最后一个节点。 head-> prev和tail-next是NULL – GeorgeCostanza