您的位置:首页 > 编程语言 > C语言/C++

C++ 链表翻转

2017-08-09 12:11 148 查看
#include <iostream>

#include <string>

struct Node {
int value;
Node * next;

Node(int data) : value(data), next(nullptr) {};

};

Node * reverse(Node * head);

void Print(Node * head);

int main()

{
Node  node1(5);
Node  node2(10);
Node  node3(15);
Node  node4(20);

node1.next = &node2;
node2.next = &node3;
node3.next = &node4;
node4.next = nullptr;

Node *head = &node1;

std::cout << "Before reverse: " << std::endl;
Print(head);
std::cout << "After reverse: " << std::endl;
Print(reverse(head));

system("pause");
return 0;

}

Node * reverse(Node * head)

{
if (head == nullptr)
{
return head;
}

Node * pre = nullptr;
Node * next = nullptr;

while (head != nullptr)
{
next = head->next;
head->next = pre;
pre = head;
head = next;
}

return pre;

}

void Print(Node * head)

{
while (head != nullptr)
{
std::cout << head->value << std::endl;
head = head->next;
}

}

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++语言 链表翻转