5. 链表+逆序打印单向链表

方法很多啊

使用一个额外的栈

void reverse_print1(Node *head)
{
stack<Node> tmp;
Node *p_node=head;
while(p_node != nullptr)
{
  tmp.push(p_node);
  p_node=p_node->next;
}

while(!tmp.empty())
{
  //打印
  tmp.pop();
}
}

使用递归

void reverse_print2(Node *head)
{
if(head != nullptr)
{
  reverse_print2(head->next);
    //打印。
}
}

为什么网上的代码在if里面还要再判断next不是null?

翻转链表,再打印

改变了链表的结构,如果需要,再翻转回去。。。。
这种翻转法是不断的改变头部

void reverse_print3(Node *head)
{
if(head == nullptr)
{
  return ;
}

//暂时的头部,刚开始是head
Node *tmp_head = head;
//将要处理的节点,是head->next;
Node *wait_change = head->next;
//head将作为指向wait_change 的指针,最后指向链表的最后一个节点。失去了原来的价值。
//上面的三个指针,每次都在变
while(wait_change != nullptr)
{
  head->next = wait_change->next;
  wait_change->next = tmp_head;
  tmp_head=wait_change;
  wait_change = head->next;
}

//最后tmp_head 是头部,wait_change 是尾部。head是最后一个节点;

//打印

//最后可以再翻转回去。
}

同样的翻转链表的方法还有,依次断开next,然后翻转。
这种翻转法是固定尾部不变,没有头部,到最后的时候才出现头部。

//head是头部
if(head == nullptr)
{
  return;
}
//head用来暂存right后边的节点
Node *left = head;
Node *right = head->next;
while(right != nullptr)
{
  head = right->next;
  right->next=left;
  right = head->next;
  left = head;
}
return right;

单向链表删除中间每个节点

没有给定首节点
不能把该节点直接删除,因为没办法获取到指向该节点的指针。

将该节点指向的节点内容复制到该节点中,然后删除他的下一个节点。
此时,下一个节点被析构,指向该节点的指针或者是引用就不能再使用了。有问题的。
同时还需要判断他的下一个节点是不是空。

题这个题应该是不对的。无解的

寻找链表中的第k个元素

两个指针指向头部,然后一个指针先走k步,然后两个指针一起移动,一个指针到尾部的时候,另一个指针就是第K个节点了

判断链表是否存在环

两个指针一个指针每次走一步,另一个指针每次走两步。
如果两个指针在某一步相等,表示存在环。
如果一个指针到结尾,那表示不存在换。

判断两个链表是否相交

直接判断链表的最后一个元素是否相同。

如果相交,那么一定是y型的两个链表,那么两个链表的最后一个元素就是相同的。

推荐阅读更多精彩内容

  • 链表问题是面试过程中经常被问到的一部分,很考查编程功底。最近刷了 LeetCode 上链表部分的面试题,我总结了一...
    JohnnyShieh阅读 4,465评论 0 9
  • 1 序 2016年6月25日夜,帝都,天下着大雨,拖着行李箱和同学在校门口照了最后一张合照,搬离寝室打车去了提前租...
    RichardJieChen阅读 4,571评论 0 12
  • //leetcode中还有花样链表题,这里几个例子,冰山一角 求单链表中结点的个数----时间复杂度O(n)这是最...
    暗黑破坏球嘿哈阅读 1,199评论 0 6
  • 本文内容取自于小甲鱼的数据结构与算法。http://www.jianshu.com/p/230e6fde9c75 ...
    阿阿阿阿毛阅读 1,862评论 0 7
  • 第一章 Nginx简介 Nginx是什么 没有听过Nginx?那么一定听过它的“同行”Apache吧!Ngi...
    JokerW阅读 31,513评论 24 1,000
  • 在第N次嫌弃学校卖的水果沙拉要么给的太少要么苹果太多 …… 忍无可忍的开始自己做了…… but……绕完了整个校园的...
    肉多多才不是小胖砸阅读 113评论 0 0
  • 这是昨天下午发生在五一大道平和堂附近的一场突发事件。这几张图片由潇湘晨报摄影部记者拍摄,可以说,完整的把事件清晰的...
    苏嗒嗒阅读 587评论 0 0
  • 一、财务报表 企业内部和外部相关利益主体可以通过财务报表评估企业的偿债能力、运营能力、盈利能力和成长能力;但财务报...
    哒OiO哒阅读 330评论 0 2
  • 偶尔放空一切,放下一切牵挂,觉得自己整个世界都亮了。
    梦夕兮梦阅读 88评论 0 0