+ -
当前位置:首页 → 问答吧 → 实现对不带头结点的单链表L进行就地逆置

实现对不带头结点的单链表L进行就地逆置

时间:2011-12-16

来源:互联网

是个小的程序填空题。实现对不带头结点的单链表L进行就地逆置,并返回反置后的链表的头指针。


void reverse(LinkList L)
{
  LinkList p,q;
  p = null;
  q=L;
  while(p != null)
  {
  ①______________
  q->next = p;
  p = q;
  ②______________
  }
  ③______________
}

作者: Zoe15597   发布时间: 2011-12-16

p = null;
  q=L;
  while(p != null)

题目写错了吧,p = null了,while(p != null)这个循环根本进不去。

看来应该是用递归做
void reverse(LinkList L)
{
  LinkList p,q;
  q = null;
  p=L;
  while(p != null)
  {
  q=p->nexe;
  q->next = p;
  p = q;
  reverse(p);
  }
  *L = *q; //这一句可能有问题,但是好像也没别的办法返回反置后的链表的头指针了
}

作者: shayla   发布时间: 2011-12-16

循环条件是 while(q != null) 打错了。

作者: Zoe15597   发布时间: 2011-12-16