算法题
链表的存储反转
定义一个方法(函数),实现输入一个链表的头结点,然后可以反转这个链表的方向,并输出反转之后的链表的头结点。
链表结点的结构:
1 | typedef struct Node{ |
两种方法:遍历法、递归法
遍历法
主要包括如下4步:
1)如果head为空,或者只有head这一个节点,return head即可;
2)从头到尾遍历链表,把reversedHead赋值给当前节点的next;
3)当前节点赋值给reversedHead;
4)遍历结束,return reversedHead。
1 | Node* reverseList(Node* head) |
递归法:
递归的实现方式主要有4步:
1)如果head为空,或者只有head这一个节点,return head即可;
2)先遍历head->next为首的链表,得到一个头结点newHead;
3)把head赋值给head->next->next, head->next为空;
4)返回newHead。
1 | node* reverseList2(node* head) |