出自于CareerCup,原题如下:
Suppose that we have a sorted singly linked list with integer values. For example:
1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7
We want to change the pointers of this linked list so that it becomes:
7->1->6->2->5->3->4
我的思路是先把链表分为前后两部分,再把后一部分顺序颠倒,然后再把两部分交替着连成新的链表,这样空间复杂度和时间复杂度都可以接受。
长时间不用链表了写得有些乱,中途还写错了导致死循环或内存报错好几次|||
代码如下:
#ifndef NODEH
#define NODEH
class node
{
public:
int value;
node *next;
};
#endif
#include "node.h"
#include <iostream>
using namespace std;
int main()
{
node *head = new node();
node *end = new node();
node *current = head;
int num;
while(cin>>num)
{
current->next = new node;
current = current->next;
current->value=n