剑指offer 输出链表/逆序输出

来源:互联网 发布:linux统计目录文件数 编辑:程序博客网 时间:2024/05/17 23:57

#include <iostream>  #include <string>  #include <vector>  #include <stack>using namespace std;  typedef int datatype;struct Node{datatype value;Node* Next_Node;};//从头到尾打印链表中的结点/*面试官是否允许这个函数允许改变输入,也就是改变输入链表的顺序是一个交流点*/bool Print_Node(Node **first){if (first == NULL || *first == NULL){return false;}Node *Node_temp = *first;vector<Node*> My_Nodes;//利用栈的先进后出的特点也是比较好的stack <Node*> My_Nodes2; while (Node_temp != NULL){My_Nodes.push_back(Node_temp);My_Nodes2.push(Node_temp);//进Node_temp = Node_temp->Next_Node;}vector<Node*>::iterator it1 = My_Nodes.end();for (it1;it1 != My_Nodes.begin();it1--){cout<<(*it1)->value<<endl;}while (!My_Nodes2.empty()){Node_temp = My_Nodes2.top();//出,栈顶元素赋值cout<<Node_temp->value<<endl;My_Nodes2.pop();}}void main()  {     system("pause");}  

对于较为简单的题,还是有很多需要注意的地方:

  • 面试官是否允许改变输入的参数(链表)
  • 使用递归来打印链表时,如果链表过长,会导致函数调用的层级很深,造成函数调用栈的溢出
  • 循环、递归、栈、链表,这几点知识的相关性

原创粉丝点击