
LinkedList
文章平均质量分 75
onyas
这个作者很懒,什么都没留下…
展开
-
求单链表的中间节点
偶数个节点时返回中间两个节点的前一个我们可以这样考虑,设想两个人跑步,一个人的速度是另外一个人的两倍,当速度快的人到达了终点,速度慢的人就在赛程的正中间。同样地,我们设置两个游动的指针,慢的指针移动步长为1,快的指针移动的步长为2。一开始都指向链表的头部,当遍历开始时,进行这样的操作:如果快的指针可以向前移动两步并且没有到达链表的尾部的话,快指针就向前移动2个节点,同时慢的指针向前移动1个节点原创 2013-04-30 17:10:42 · 1240 阅读 · 0 评论 -
给定一个链表的头指针,要求只遍历一次,将单链表中的元素的顺序翻转过来
Beauty of Programming..#include #include #include struct ListNode{ int data; ListNode* next;};void InitList(ListNode** head){ *head = (ListNode*)malloc(sizeof(ListNode)); (*head)->next原创 2013-04-24 23:57:00 · 2642 阅读 · 0 评论 -
求链表的倒数第K个节点,如果K大于链表长度则返回NULL
/* 思路:两个指针变量p1,p2,开始都指向头结点 p1先向前移动K个位置,如果已经为NULL,则返回NULL 否则,p2也开始跟p1一起向后移动,因为p1比p2快K个位置 所以当,p1指向结束位置时,p2刚好指向倒数第K个位置*/#include #include #include #include struct ListNode{ int data; ListNod原创 2013-04-30 21:21:46 · 729 阅读 · 0 评论 -
判断一个单链表是否有环
一、判断链表是否存在环/*设置两个指针(fast, slow),初始值都指向头,slow每次前进一步,fast每次前进二步,如果链表存在环,则fast必定先进入环,而slow后进入环,两个指针必定相遇。(当然,fast先行头到尾部为NULL,则为无环链表)程序如下:*/bool isExitsLoop(ListNode* head){ ListNode* slow = head;原创 2013-05-01 09:58:31 · 709 阅读 · 0 评论