回 帖 发 新 帖 刷新版面

主题:请问大家这个问题

LINKLIST *invertlink(LINKLIST *)
{
LINKLIST *p,*q,*r;
q=null;p=head;
while(p!=null)
{r=q,q=p;这句话的意思是不是r和p都指向一个结点
p=p->next;这句话的意思是色么
q->next=r;这句话的意思是色么
  return q;
}

回复列表 (共3个回复)

沙发

你这个应该是实现逆转链表的功能吧?

它的思想是在不增加新的链结点空间的前提下,通过改变链结点指针域地址来实现逆序

r = q; 意思为:r一直跟随q的指向,当q往下遍历的时候,r就指向q的上一个链结点
q = p; 意思为:q一直跟随p的指向,当p往下遍历的时候,q就指向其上一个链结点
p = p->link意为:p遍历整个链表直到p为空。
q->link = r意为: 把结点r连到结点q上。 
最后返回q的地址,则成一个逆序链表

板凳

是的

3 楼


你这个应该是实现逆转链表的功能吧?

它的思想是在不增加新的链结点空间的前提下,通过改变链结点指针域地址来实现逆序

r = q; 意思为:r一直跟随q的指向,当q往下遍历的时候,r就指向q的上一个链结点
q = p; 意思为:q一直跟随p的指向,当p往下遍历的时候,q就指向其上一个链结点
p = p->link意为:p遍历整个链表直到p为空。
q->link = r意为: 把结点r连到结点q上。 
最后返回q的地址,则成一个逆序链表
能明白不?说的有点罗嗦~~~~~~[em2]

我来回复

您尚未登录,请登录后再回复。点此登录或注册