方法1:将单链表储存为数组,然后按照数组的索引逆序进行反转。
方法2:使用三个指针遍历单链表,逐个链接点进行反转。
方法2代码:
- Node * ReverseList(Node *head)
- {
- Node *p1,*p2,*p3;
- if(head==NULL||*head==NULL)
- return head;
- p1=head;
- p2=p1->next;
- while(p2) //注意条件
- {
- p3=p2->next; //要改变p2->next的指针,所以必须先保留p2->next
- p2->next=p1;
- p1=p2; //循环往后
- p2=p3;
- }
- head->next=NULL; //原先的head已经变成tail,别忘了置空,只有到这步才能置空
- *head=p1;
- return head;
- }