摘要: 本文主要介绍解决单向链表上的一些操作的思路和代码实现。主要的问题包括以下几点: 1 向单向链表中的插入一个节点 2 删除单向链表中的一个节点  3 查找单向链表中的一个节点   扩展问题1:查找单向链表中的倒数第k个节点。   扩展问题2:查找单向链表中的中间节点,当节点个数为偶数时返回中间两个元素中的前者(后者)  4反转单向链表(非递归实现)  5反转单向链表(递归实现)  6判断单向链表是否有环 7判断两个单向链表是否相交    扩展问题:返回两个链表的第一个交点。  8 用单链表实现栈,要求push和pop的时间复杂度为O(1)  9 用单链表实现队列,要求enQueue和deQueue的时间复杂度为O(1)  10 在一个链表中删除另一个链表中的元素(即求差集(A-B)) 阅读全文
posted @ 2011-05-06 18:44 写代码的李纳 阅读(7979) 评论(7) 推荐(2) 编辑
摘要: 众所周知,在计算机中要对给定的数据集进行若干处理,首要任务是把数据集的一部分(当数据量非常大时,可能只能一部分一部分地读取数据到内存中来处理)或全部存储到内存中,然后再对内存中的数据进行各种处理。 例如,对于数据集S{1,2,3,4,5,6},要求S中元素的和,首先要把数据存储到内存中,然后再将内存中的数据相加。 当内存空间中有足够大的连续空间时,可以把数据连续的存放在内存中,各种编程语言中的数组一般都是按这种方式存储的(也可能有例外),如图1(b);当内存中只有一些离散的可用空间时,想连续存储数据就非常困难了,这时能想到的一种解决方式是移动内存中的数据,把离散的空间聚集成连续的一块大空间,. 阅读全文
posted @ 2011-05-06 16:27 写代码的李纳 阅读(8198) 评论(5) 推荐(4) 编辑