recursion - list递归 - 翻转linkedlist




按相反顺序打印单个链接列表 (2)

C执行你的奖金问题,分三行:

#include <stdio.h>

struct node {
    int data;
    struct node* next;
};

void ReversePrint(struct node* head) {
    if(head == NULL) return;
    ReversePrint(head->next);
    printf("%d ", head->data);
}

int main()
{
    struct node first;
    struct node second;
    struct node third;

    first.data = 1;
    second.data = 2;
    third.data = 3;

    first.next = &second;
    second.next = &third;

    ReversePrint(&first); // Should print: 3 2 1
    printf("\n");

    return 0;
}

好的,这是路易斯安娜州大学东南部CMPS 280测试中的奖金问题。 以三行反向打印单链表。 有任何想法吗?


如果允许使用其他数据结构,则使用堆栈。

步骤1:从头节点遍历链表,并将键放入堆栈,直到到达最后一个节点。 这将花费O(n)时间。

第2步:从堆栈中弹出元素。 这将花费O(1)次。

因此,代码将会是

while(head != null){
stack.push(head.val);
head = head.next;
}
while(stack.isEmpty() != true){
stack.pop();
}






iteration