首页 > 代码库 > 从尾到头打印链表--《剑指offer》
从尾到头打印链表--《剑指offer》
题目:很简单,就是题目,将链表从尾到头打印出来。
可能我们首先想到的是将链表进行遍历,将之前的访问的数据进行保存,最后进行反向输出,可是保存数据的空间是个问题;或者是我们将整个链表进行反向操作,将整个链表进行逆置,可是我们只是进行打印操作而已,改变链表不合适吧...
其实这时候应该想到了,用栈:既然是逆置,和栈的功能不就不谋而合吗,后进先出,进行反向打印。
//2014-5-18 //反向输出链表 #include <iostream> #include <cstdlib> #include <stack> using namespace std; typedef struct Node { int data; struct Node *next; /* 指向下个节点 */ } Node, *LinkNode; void Create(LinkNode &head) { head = (LinkNode) malloc(sizeof(Node)); head->next = NULL; } void Insert(LinkNode &head, int i) { if(head -> next == NULL) { LinkNode p = (LinkNode) malloc(sizeof(Node)); p->data = http://www.mamicode.com/i;>输出如下:书中也是如我这般的,不过对于栈的处理不同,我是使用stack<int> node;进行数据存储,而书中则是使用节点存储,不过我想这应该差不多吧...(具体我也不知道,如果有什么看法的希望指出)
书中给出如下一段话:
这个我倒是真没想到,不过按照提示递归实现了:
void OppoLink(LinkNode L) { if(L!=NULL) { if(L->next != NULL) { OppoLink(L->next); } cout << L->data << " "; } }在调用的时候用OppoLink(L->next),因为我创建的链表有个头结点,当然,它里面的数据很意外。。。不过对于递归大家肯定知道,层数深了的话,后果很可怕,所以我想用栈应该会更好一些。
O(∩_∩)O欢迎指教啦....
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。