代码如下:(内含注释,希望对大家有帮助)
#include <iostream>
using namespace std ;
class Node{
public:
int data ;
Node *next ;
};
//创建链表(同时可以将tail为指针带出函数)
Node * createNode(int n , Node **tail){
Node *head = new Node ;
Node *pre = head ;
for(int i = 0 ; i < n ; i++){
Node *p = new Node ;
cin>>p->data ;
pre->next = p ;
pre = p ;
p->next = NULL ;
}
return head ;
}
//打印链表
void display(Node *head){
Node *p = head->next ;
while(p != NULL){
cout<<p->data<<" " ;
p = p->next ;
}
}
//链表的逆置
Node* reverse(Node *head ){
//标记头结点
Node *flag = head ;
Node *first , *second ;
first = flag->next ;
flag->next = NULL ;
//画个图就很容易明白了
while(first != NULL){
second = first->next ;
//第一次循环时还可以顺便将最后结点的后继设置为空
first->next = flag->next ;
flag->next = first ;
first = second ;
}
return flag ;
}
int main(){
Node *tail ;
Node *p = createNode(5 , &tail) ;
display(p) ;
cout<<"\n" ;
display(reverse(p)) ;
return 0 ;
}
运行结果: