设计一个算法,从右往左打印一个双链表中各个结点的值
时间: 2023-05-15 18:05:10 浏览: 100
可以使用双指针,先将指针移动到链表的尾部,然后从尾部开始遍历链表,依次输出每个结点的值。具体实现可以参考以下代码:
void printListReverse(ListNode* head) {
if (head == nullptr) {
return;
}
ListNode* tail = head;
while (tail->next != nullptr) {
tail = tail->next;
}
while (tail != nullptr) {
cout << tail->val << " ";
tail = tail->prev;
}
}
相关问题
设计一个算法,从右向左打印一个双链表中各个结点的值
可以使用双指针的方式,先将指针指向双链表的尾部,然后依次向前遍历,输出每个节点的值即可。
具体实现步骤如下:
1. 定义两个指针p和q,分别指向双链表的尾部和倒数第二个节点。
2. 从p开始向前遍历,每经过一个节点就输出该节点的值。
3. 当p指向头节点时,遍历结束。
代码实现如下:
void printListReverse(ListNode* head) {
if (head == nullptr) {
return;
}
ListNode* p = head;
while (p->next != nullptr) {
p = p->next;
}
ListNode* q = p->prev;
while (q != nullptr) {
cout << q->val << " ";
q = q->prev;
}
}
设计一个算法,从右向左打印一个双链表中各个结点的值。
可以使用双指针法,先将指针指向双链表的尾部,然后依次向前遍历,输出每个结点的值即可。
具体实现如下:
1. 定义两个指针p和q,分别指向双链表的尾部和倒数第二个结点。
2. 从尾部开始,依次输出每个结点的值,直到遍历到头结点为止。
3. 每次遍历时,将p指针向前移动一个结点,q指针也向前移动一个结点,直到p指针指向头结点。
4. 输出头结点的值,算法结束。
代码实现如下:
void printListReverse(Node* head) {
if (head == NULL) {
return;
}
Node* p = head;
Node* q = head->prev;
while (p != NULL) {
cout << p->val << " ";
p = p->prev;
q = q->prev;
}
cout << endl;
}