逆置/反转单链表
遗留的问题:
我想新创建一个链表来实现单链表的反转,目前还没有实现出来
思想及算法
代码
#include<iostream>
using namespace std;
struct list {
int val;
list* next;
list(int x):val(x),next(nullptr){}
};
list* insert(list* head,int x) {
list* p = head;
while (p->next)
{
p = p->next;
}
list* t = new list(x);
p->next = t;
return head;
}
void pprint(list* head) {
if (nullptr == head) {
return;
}
if (head->next == nullptr) {
cout << head->val << endl;
}
else
{
cout << head->val << "->";
}
return pprint(head->next);
}
list* Reserve(list* head) {
if (nullptr == head) {
return nullptr;
}
list* p0 = nullptr;
list* p1 = head;
list* p2 = head->next;
while (p1)
{
p1->next = p0;
p0 = p1;
p1 = p2;
if (p2) {
p2 = p2->next;
}
}
return p0;
}
int main() {
list* head = new list(0);
for (int i = 1; i < 5; i++) {
insert(head, i);
}
pprint(head);
list* t = Reserve(head);
pprint(t);
return 0;
}