单链表是学习不可缺少的一个重要模块,在面试中也会出很多的单链表变种问题,今天就把他们汇总宋总结一下
首先来是实现一个简单的单链表:(在这里,一些简单的实现单链表的操作函数就不备注了)typedefintDataType;//typedef了一个类型,以后如果想要改变单链表节点内储存数据..
分类:
编程语言 时间:
2016-04-14 12:26:46
阅读次数:
284
1、判断两个单链表是不是相交思路分析:最简单直接的方法就是依次遍历两条链表,判断其尾节点是不是相等,相等则相交否则不相交。boolCheckCross(constList&list1,constList&list2)//list1,list2为两个对象
{
Node*l1=list1._head;
Node*l2=list2._head;
while(l1-..
分类:
编程语言 时间:
2016-03-17 02:14:55
阅读次数:
292
1、判断一个单链表是否带环思路解析:判断一个单链表是不是带环,就看在遍历单链表的时候能不能遍历完成,如果带环的话会陷入死循环程序一直无法结束,但是这种判断方法在程序的实现是不可能的。所以转换一种思路,利用两个遍历速度不同的指针遍历,如果存在环的话,那么快指针..
分类:
编程语言 时间:
2016-03-17 02:14:31
阅读次数:
239
#include<stdio.h>
#include<assert.h>
#include<stdlib.h>
typedefintDataType;
typedefstructSListNode
{
DataTypedata;
structSListNode*next;
}SListNode;
SListNode*BuyNode(DataTypex)
{
SListNode*next=(SListNode*)malloc(sizeof(SListNode));
ne..
分类:
编程语言 时间:
2016-01-13 00:48:38
阅读次数:
168
问题:
给定个单链表,判断该链表是否存在环。
分析:
这个问题是见的非常多的题目,问题本身而言,技巧性很强,或者说思路很巧妙,这里要说的不是这个题目本身,而是说这种技巧,在很多的地方是用的到的,比如,在寻找单链表的中间节点的时候,就可以用这种形式,一个走两步,一个走一步的形式,来获得中间节点。
//
bool hasCycle(ListNode *head) {
if(...
分类:
其他好文 时间:
2014-06-10 10:48:49
阅读次数:
176