写出在链式存储结构下将线性表逆转的算法,要求使用最少的附加空间
3个回答
展开全部
假设是单链表存贮,从头遍历到尾,遍历每个元素是将指针反转,只需要一个额外空间。
算法描述:
header : 指向链表头
p=header;
pre=NULL;
next=NULL;
while(p!=NULL)
{
next=p->next;
p->next=pre;
pre=p;
p=next;
}
head=p;
这样就反转了。用了两个额外空间,时间复杂度O(n).
算法描述:
header : 指向链表头
p=header;
pre=NULL;
next=NULL;
while(p!=NULL)
{
next=p->next;
p->next=pre;
pre=p;
p=next;
}
head=p;
这样就反转了。用了两个额外空间,时间复杂度O(n).
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
双链表就简单啦,把每个结点向前和向后两个指针交换一下就是了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
引用zhoujin1012的回答:
假设是单链表存贮,从头遍历到尾,遍历每个元素是将指针反转,只需要一个额外空间。
算法描述:
header : 指向链表头
p=header;
pre=NULL;
next=NULL;
while(p!=NULL)
{
next=p->next;
p->next=pre;
pre=p;
p=next;
}
head=p;
这样就反转了。用了两个额外空间,时间复杂度O(n).
假设是单链表存贮,从头遍历到尾,遍历每个元素是将指针反转,只需要一个额外空间。
算法描述:
header : 指向链表头
p=header;
pre=NULL;
next=NULL;
while(p!=NULL)
{
next=p->next;
p->next=pre;
pre=p;
p=next;
}
head=p;
这样就反转了。用了两个额外空间,时间复杂度O(n).
展开全部
最后应该是head=pre
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |