写一个大家都比较熟悉的数据结构:单向链表。 不过先告诉大家一个小秘密,java的API里面已经提供了单向链表的类,大家可以直接拿来用,不过学习数据结构课程的时候想必大家也已经知道,虽然系统会给我们提供一些常用的数据结构,但是自定义的总是能够带来不同的喜感的,而且通过自己的编写也更能够让我们了解其中实
分类:
编程语言 时间:
2016-03-11 01:00:00
阅读次数:
398
第7题 微软亚院之编程 判断俩个链表是否相交 给出俩个单向链表的头指针,比如h1,h2,判断这俩个链表是否相交。 为了简化问题,我们假设俩个链表均不带环。 问题扩展: 1.如果链表可能有环列? 2.如果需要求出俩个链表相交的第一个节点列? 思路: 判断两个链表是否相交,并且求第一个节点列(无环)。
分类:
编程语言 时间:
2016-03-10 18:43:05
阅读次数:
192
c++中的单向链表写法:实现增删查改、构造函数、运算符重载、析构函数等。建立头文件SList.h#pragmaonce
typedefintDataType;
//SList要访问SListNode,可以通过友元函数实现,友元函数在被访问的类中
classSListNode
{
friendclassSList;//友元函数
public:
SListNode(cons..
分类:
编程语言 时间:
2016-03-08 00:41:13
阅读次数:
218
题目: 分别实现反转单向链表和双向链表的函数。 要求: 如果链表长度为N,时间复杂度为O(N),额外空间复杂度要求为O(1)。 程序: 反转单向链表:public class Node{ public Node(int data){ this.value=data; } public int val...
分类:
编程语言 时间:
2016-03-07 18:44:40
阅读次数:
194
单链表和顺序表能够处理的问题都差不多,但是链表的优点在于能够节省空间,空间的利用率更高,程序执行的效率更快,链表的基本操作也是面试官喜欢考察的问题之一,链表是一种基本的数据结构,下面主要是利用c++来实现链表的基本功能。//单向链表
#include<assert.h>
typ..
分类:
编程语言 时间:
2016-03-05 14:54:32
阅读次数:
223
双向链表的遍历要比单向链表方便很多,所以逆置方法要比单链表丰富很多,因为可以从后向前遍历,所以可以像逆置数组一样进行操作,也可以根据单链表的特性进行逆置,也可以用双链表独有的特性进行逆置。具体方法如下:链表的类定义如下:typedefintDataType;
classDSNode
{
pub..
分类:
其他好文 时间:
2016-03-05 14:50:35
阅读次数:
184
在微博看到,有人说8个应届毕业生没有人写出o(1)空间复杂度,o(n)时间复杂度的反转单向链表。 (不是我自己想的) public void reverseList(ListNode head) { ListNode newHead = null; while(head != null) { Lis
分类:
编程语言 时间:
2016-02-26 18:29:36
阅读次数:
151
给定一个升序的单向链表,将它转化为高度平衡的二叉搜索树。...
分类:
其他好文 时间:
2016-02-20 09:19:42
阅读次数:
177
题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。分析:删除结点可以从链表的头结点开始顺序遍历,发现某个结点的next指向要删除的结点时,将该结点的next指向要删除的下一个结点。但是基于这种思路,得到的时间复杂度是O(n)。删除结点只是让这..
分类:
其他好文 时间:
2016-02-19 14:33:06
阅读次数:
193
指针的链表实现方式是,当前节点的next指向下一个节点,用数组模拟就是 for(int i=next[0];i!=0;i=next[i]) i=next[i];就是一条链。 例题: 你有一个破损的键盘。键盘上的所有键都可以正常工作,但有时Home键或者End键会自动按下。你并不知道键盘存在这一问题,
分类:
编程语言 时间:
2016-02-01 23:50:01
阅读次数:
758