如何逆序输出单链表?
2010-06-23 11:37
260 查看
怎样才能逆序输出单链表呢??刚刚有人考了我一道题,逆序输出单链表:
我是这样答的(下面的代码为伪代码,不能通过编译):
void printSList(slist *pList)
{
assert(pList);
if (pList == NULL)
return;
string str;
while (pList)
{
str = string(*pList) + str;
pList = pList->next;
}
printf("%s", str.c_str());
}
后来他让我想一想还有没有更为简单的方法了,当时允许我上网,我用了几分钟到网上找了一下,没有找到更好的办法,如果先把链表逆序,再顺序输出时间复杂度更高。
我走出大楼以后,忽然想到,是递归呀,对是递归:
void printSList(slist *pList)
{
assert(pList);
if (pList == NULL)
return;
if (pList->next == NULL)
printf("%s", *pList);
else
{
printSList(pList->next);
printf("%s", *pList);
}
}
哎,人生中机会就是一瞬之间,错过不知道下一次又是什么时候。但只要做了就会收获,会一次比一次做的好。
我是这样答的(下面的代码为伪代码,不能通过编译):
void printSList(slist *pList)
{
assert(pList);
if (pList == NULL)
return;
string str;
while (pList)
{
str = string(*pList) + str;
pList = pList->next;
}
printf("%s", str.c_str());
}
后来他让我想一想还有没有更为简单的方法了,当时允许我上网,我用了几分钟到网上找了一下,没有找到更好的办法,如果先把链表逆序,再顺序输出时间复杂度更高。
我走出大楼以后,忽然想到,是递归呀,对是递归:
void printSList(slist *pList)
{
assert(pList);
if (pList == NULL)
return;
if (pList->next == NULL)
printf("%s", *pList);
else
{
printSList(pList->next);
printf("%s", *pList);
}
}
哎,人生中机会就是一瞬之间,错过不知道下一次又是什么时候。但只要做了就会收获,会一次比一次做的好。
相关文章推荐
- 如何逆序输出一个链表的节点内容
- C语言 逆序输出单链表(递归)
- 26751:线性链表的建立及逆序输出 分数: 100
- [华为机试练习题]24.删除链表中的反复节点、剩余节点逆序输出
- [记着玩]java模拟链表逆序输出结果
- 链表——逆序输出
- 关于链表的逆序输出
- 链表的插入、删除、逆序打印、输出倒数第N个、链表逆序
- 单链表应用——逆序输出单链表中的元素
- 输入k 实现链表每k项都逆序输出
- [面试] 算法(七)—— 逆序输出链表
- 将一个链表逆序并输出
- 华为机试—逆序链表输出
- 递归逆序输出链表
- 剑指offer例题5—逆序输出链表
- 将链表的结构逆序、将链表以逆序的形式输出
- 剑指offer 输出链表/逆序输出
- 链表的逆序输出
- 逆序输出链表
- 删除链表中的重复节点、剩余节点逆序输出