C中如何遍历双向链表中的n个元素?

How to traverse through n elements in a doubly linked list in C?

如标题所示,我必须遍历一个双向链表。唯一的问题是我必须遍历 "n" 个元素。

例如,如果我得到一个列表,1 3 2 2 1 1,我必须根据我的值向左或向右迭代:

1 -> 3 -> 1 -> 1。我可以移动与列表中的值相同的值。因为我从 1 开始,所以我可以向左或向右移动 1 个元素(只能向右移动)。当我降落在 3 上时,我可以向左或向右移动 3 个元素等

while (temp->next != NULL) {
   //traverse n elements left or right
}

如果我总是只需要一次遍历 1 个元素,那就像

一样简单
temp = temp->next;

如果有人可以解释根据节点值遍历 'n' 个元素的策略,将不胜感激。

编辑:只有在该方向上有足够的元素时,您才能朝该方向前进。所以在1 -> 3的情况下,只能往右走3。

我觉得你的问题是遍历[=​​15=]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--;
     }
}

您可以实现您的算法并选择如何遍历,给定两个遍历规则。