自己写的,因为很多人在面试的时侯遇到了这个问题,我先写下来放在这,以后用.
#include <iostream>
using namespace std;
class Node {
public:
int nData;
Node* next;
Node(int data, Node *next){
nData = data;
this->next = next;
}
};
void reverse(Node* head){
Node *temp = head->next;
Node *preNode = NULL;
Node *nextNode = head->next;
printf("before reverse ");
while(temp != NULL){
printf("%d /t",temp->nData);
temp = temp->next;
}
printf("/n");
temp = head->next;
while(NULL != temp){
nextNode = temp->next;
temp->next = preNode;
preNode = temp;
temp = nextNode;
}
head->next = preNode;
temp = head->next;
printf("after reverse ");
while(temp != NULL){
printf("%d /t",temp->nData);
temp = temp->next;
}
printf("/n");
}
int main(int argc, char **argv){
Node head(0,NULL);
Node* p = &head;
for(int i = 0; i < 13; i++){
Node* temp = new Node(i+1,NULL);
p->next = temp;
p = p->next;
}
reverse(&head);
return 0;
}
欢迎大家指正!