DS用C++实现单链表逆置

来源:百度知道 编辑:UC知道 时间:2024/06/23 14:50:40
{Node<T> *p=first,*p,*q;
first=null;
while(p)
{q=p;p=p->link;
q->link=first;
first=q;
}
}
程序如上,每一步的意思是什么呢 希望好心人给解答下

大概看了一下,程序主要部分是while循环,前面是一些初始化,跟定义一些东西.
如果没看错的话 p应该是预先指向要倒置的链表的第一个结点.倒置后,q为新链表的头.
没有图比较难说明,我给你说出两步,之后的你自己推
1 2表示两个结点1的后面连接的是2
1表示头,当前p指向1;
q=p让q也指向1
p=p->link;p现在指向2了
q->link=first q的下一个为first当前为空
first=q first也指向了1
之后判断while
成立继续
q=p q现在指向2
p=p->link 假设3为2后面的连接,那么p现在就指向3
q->link=first q的下一个指向1//这步是关键,你想想,循环两次后 q指向2 而q->link指向1 实现了倒置
first=q first指向2
之后继续while判断...
你最后拿张纸自己画画