初学数据结构,求指点

Kimurate 2011-03-13 01:23:23

{
Node<T> *p = first, *q = first, *f = first;
Node<T> *temp_q = first; //中间变量
for (int i = 0; i < n - 1; i ++) {
temp_q = q -> link; //暂存q结点的下一个结点
q -> link = p;
p = q;
q = temp_q;
}
//循环结束时p已指向原链表中的最后一个结点,q指向NULL
f -> link -> link = NULL; //将原链表中第一个结点的指针域置为NULL
f -> link = p; //将头结点指向原链表中的最后一个结点
}

题目要求写一个把单链表逆置的函数,要求算法的空间复杂度为O(n),我这样写对吗?或者有没有更好的算法呢~?
求指点~ :)
...全文
97 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kimurate 2011-03-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 newfarmerchi 的回复:]

C/C++ code

{
Node<T> *p = first->link, *q ;
first->link = NULL;
while( p )
{
q = p -> link;
p -> link = first;
first = p;
p = q;
}
……
[/Quote]

有点懂了,但还是有点晕+_+ 呵呵,数据结构好抽象啊~
Kimurate 2011-03-13
  • 打赏
  • 举报
回复
额,我对单链表逆置的理解是头结点不变,然后每个元素之间的前趋关系反转。1楼的朋友好像和我的看法不同。
@_@到底何谓逆置呀?
愤怒的熊猫007 2011-03-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 newfarmerchi 的回复:]
C/C++ code

{
Node<T> *p = first->link, *q ;
first->link = NULL;
while( p )
{
q = p -> link;
p -> link = first;
first = p;
p = q;
……
[/Quote]
这个已经很简便了~
newfarmerchi 2011-03-13
  • 打赏
  • 举报
回复

{
Node<T> *p = first->link, *q ;
first->link = NULL;
while( p )
{
q = p -> link;
p -> link = first;
first = p;
p = q;
}

}

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧