满意答案
8001354qq
2013.04.02
采纳率:55% 等级:12
已帮助:6262人
1.建立两个指针struct* p,q,p=head,q=p->next,即最开始p指向链表的第1项,q指向第2项
2.if q->next !=NULL, p=p->next,q=q->next
3.endif q->next ==NULL,即q指向最后一项,p指向倒数第二项
新建一个指针,保存原表尾的地址 struct*t=q
4.q->next=p,q=p //倒数第一项指向倒数第二项,将q指向倒数第二项
5.p=head //p重新重表头开始遍历
6.if p->next !=q,p=p->next //如果p指向的不是q指向的前一项,则p继续向后遍历
7.endif p->next ==q //q指向p的前一项
8. q->next =p,q=p //重复第4步
9.p=head //重复第5步。
。。。
。。。
N. until q=p=head
至此,原链表已经完全逆转,然后让头指针指向原链表的表尾,即指向新链表的表头 head=t,这样就搞定了
----------------------------------------------------------
马上要停电了,没时间检查,上面是我粗略的想法,应该有很好的改进方案,先关机,免得电脑被闪了
00分享举报