#include <iostream>
using namespace std;
struct Node{
int value;
struct Node* next;
}*LinkedList;
Node *reverseList(Node *head){
//遍历每一位然后将其移到最前面(head后的一位)
Node *p,*q;
p=head->next;
while(p->next!=NULL){
q=p->next;
p->next=q->next;
q->next=head->next;
head->next=q;
}
p->next=head;
head=p->next->next;
p->next->next=NULL;
return head;
}
Node *reverseList2(Node *head){
//将节点指向改成反的,最后把尾节点改成头节点
Node *p1,*p2,*p3;
p1=head;
p2=p1->next;
while(p2){
p3=p2->next;
p2->next=p1;
p1=p2;
p2=p3;
}
head->next=NULL;
head=p1;
return head;
}
void createList(Node *tail,int n){
cin>>tail->value;
tail->next=NULL;
n--;
for(int i=0;i<n;i++){
Node *p=new Node;
cin>>p->value;
tail->next=p;
p->next=NULL;
tail=p;
}
}
void showList(Node *head){
Node *p;
p=head;
while(p){
cout<<p->value<<" ";
p=p->next;
}
cout<<endl;
}
int main() {
Node *t=new Node;
createList(t,5);
showList(t);
Node *p;
p=reverseList2(t);
showList(p);
return 0;
}
单链表反转
最新推荐文章于 2023-04-18 20:48:56 发布