链表的反转
- 基本思想:
用三个指针,其中一个指针p指向头结点,q为p的下一个结点。通过判断q是否为空,实现循环,在每一次循环中,引入新的指针r,将q指针的下一个结点设为p,并更新指针q和r。
- C++完整代码如下:
#include<iostream>
using namespace std;
struct ListNode
{
int val;
ListNode *next;
ListNode(int x): val(x), next(NULL){}
};
ListNode *help(ListNode *a)
{
ListNode *p = a;
ListNode *q;
ListNode *r;
q = p->next;
p->next = NULL;
while (q){
r = q->next;
q->next = p;
p = q;
q = r;
}
return p;
}
int main()
{
int n;
ListNode *a=new ListNode(NULL);
ListNode *pa = a;
ListNode *result;
cin >