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--;
}
}
您可以实现您的算法并选择如何遍历,给定两个遍历规则。
如标题所示,我必须遍历一个双向链表。唯一的问题是我必须遍历 "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--;
}
}
您可以实现您的算法并选择如何遍历,给定两个遍历规则。