题目:输入一个链表的头结点,反转该链表,并返回反转后链表的头结点。代码如下:
#include
<
iostream
>
using namespace std;
struct Node
{
int value;
Node * link;
Node()
{
value = 0 ;
link = NULL;
}
};
// 返回反向链表的头结点
Node * Reserve(Node * head)
{
Node * pre, * next;
pre = head;
head = head -> link;
pre -> link = NULL;
while (head != NULL)
{
next = head -> link;
head -> link = pre;
pre = head;
head = next;
}
return pre;
}
int main()
{
Node * head = new Node;
Node * tail = head;
// 生成10个结点元素
for ( int i = 0 ;i < 10 ;i ++ )
{
Node * newNode = new Node;
newNode -> value = i + 1 ;
tail -> link = newNode;
tail = newNode;
}
// 正向遍历链表
Node * interator = head;
while (interator != NULL)
{
cout << interator -> value << endl;
interator = interator -> link;
}
// 将链表反向
interator = Reserve(head);
while (interator != NULL)
{
cout << interator -> value << endl;
interator = interator -> link;
}
// 堆区内存清理
while (head != NULL)
{
Node * next = head -> link;
delete head;
head = next;
}
return 0 ;
}
using namespace std;
struct Node
{
int value;
Node * link;
Node()
{
value = 0 ;
link = NULL;
}
};
// 返回反向链表的头结点
Node * Reserve(Node * head)
{
Node * pre, * next;
pre = head;
head = head -> link;
pre -> link = NULL;
while (head != NULL)
{
next = head -> link;
head -> link = pre;
pre = head;
head = next;
}
return pre;
}
int main()
{
Node * head = new Node;
Node * tail = head;
// 生成10个结点元素
for ( int i = 0 ;i < 10 ;i ++ )
{
Node * newNode = new Node;
newNode -> value = i + 1 ;
tail -> link = newNode;
tail = newNode;
}
// 正向遍历链表
Node * interator = head;
while (interator != NULL)
{
cout << interator -> value << endl;
interator = interator -> link;
}
// 将链表反向
interator = Reserve(head);
while (interator != NULL)
{
cout << interator -> value << endl;
interator = interator -> link;
}
// 堆区内存清理
while (head != NULL)
{
Node * next = head -> link;
delete head;
head = next;
}
return 0 ;
}