正如标题所示,我必须遍历一个双向链表。唯一的问题是我必须遍历" n"元件。
例如,如果我给出了1 3 2 2 1 1的列表,我必须向左或向右迭代,具体取决于I' m的值:
1 - > 3 - > 1 - > 1.我可以移动与列表中的值相同的值。由于我从1开始,我可以向左或向右移动1个元素(只能向右移动)。当我降落在3时,我可以向左或向右移动3个元素等。
while (temp->next != NULL) {
//traverse n elements left or right
}
如果我一直只需要遍历1个元素,那就像
一样简单temp = temp->next;
如果有人可以解释遍历 元素取决于节点的价值,非常感谢。
编辑:如果该方向上有足够的元素,您只能朝着方向前进。所以在1 - >的情况下3,你只能在3之后去。
答案 0 :(得分:0)
我认为您的问题是遍历 n 元素,其中 n 是当前节点的值。 代码就像〜
int tr;
while (temp->next != NULL)
{
tr=temp->data; // temp->data holds the value of the current node.
Node *leftptr = temp, *rightptr = temp;
while(tr!=0 && rightptr!=NULL) //moves right side
{
rightptr = rightptr->next;
tr--;
}
tr=temp->data;
while(tr!=0 && leftptr!=NULL) //moves left side
{
leftptr = leftptr->prev;
tr--;
}
}
在给定两个遍历规则的情况下,您可以实现算法并选择如何遍历。