一、概念
(1)数组的线性序是由数组的下标决定的,链表中的顺序是由各对象中的指针所决定的
(2)链表结点结构
node *prev;
node *next;
int key;
(3)链表结点
node *head;
node *nil;//哨兵
(4)对链表的操作
LIST-SEARCH(L, k)
LIST-INSERT(L, x)
LIST-DELETE(L, x)...
分类:
编程语言 时间:
2016-06-05 14:07:11
阅读次数:
378
深入链表的操作 将使用内部类,完成链表的操作! 一,链表的改进 之前已经实现了简单的单向链表,但是因为要用手工去处理各个节点的关系,这样肯定不行。 所以此处最好将节点的操作进行封装。这样用户操作就很方便了。 假设现在的节点操作有以下几种:增加数据,查找数据,删除数据。 特别强调的是,如果要删除节点的 ...
分类:
其他好文 时间:
2016-05-23 21:09:58
阅读次数:
185
本解析源码来自JDK1.7
LinkedList许多方法是为了适配其实现的接口,本质上都是双向链表的操作LinkedList概要
基于双向链表,主要实现了List和Deque接口,Deque接口继承自Queue,所以LinkedList同时实现了Queue接口
由于其基于双向链表,操作需要操作连接指针数数较多,所以线性操作系数比ArrayList较大
插入删除快,随机访问慢
线程不安全,修改列表结...
分类:
其他好文 时间:
2016-05-18 18:23:00
阅读次数:
172
题意:给你一串合法的括号和当前光标的位置和一些操作,问操作完之后的串是怎么样的
思路:模拟一个双向链表的操作,首先先预处理出配对的括号组,然后模拟即可
#include
using namespace std;
const int maxn = 1e6;
struct Node
{
int l,r;
}nodes[maxn];
char s1[maxn],s2[maxn];
int ...
分类:
其他好文 时间:
2016-05-12 23:00:03
阅读次数:
185
题目:Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists。
将两个有序链表按序合并。
主要是链表的操作,与链表有关的题就拿c++做了。思路:依次比较两个链表的当前元素的...
分类:
其他好文 时间:
2016-05-12 14:31:08
阅读次数:
111
一.一般链表的局限性. 在我们学习数据结构时,链表的操作大同小异,虽然数据结构使用抽象数据类型描述算法,但是实现方法的本身特点就造成了链表的基本操作和用户自定义数据类型(ElemType)产生了高度的耦合,数据类型和链表的操作这种"绑定",降级了代码的重用性,每次将链表应用到新的场合时,都要修改源代 ...
分类:
其他好文 时间:
2016-05-07 13:37:57
阅读次数:
215
package java.util;
import java.util.function.Consumer;
/**
* List和Deque接口的双向链表实现,实现了所有可选接口,允许空值null
* 支持所有双向链表应该支持的操作,深入链表的操作都是从链表头遍历到链表尾
* 该实现不支持并发。多线程访问,至少一个线程修改列表结构时,需要外部同步,如:
* List list = C...
分类:
编程语言 时间:
2016-05-06 15:17:21
阅读次数:
194
这个题的意思是将一个链表,按照每两个节点逆序。我想了一下,主要是对链表的操作以及对指针的交换,掌握了方法以后确实不是很难,但是需要注意的是不要将指针给弄错了,否则容易导致链表信息丢失。
我的方法中使用到了四个主要指针,我画了个图来解释它们:
这四个指针的作用通过上图,大家应该能够理解了,因为我们需要做的事有三件:
(1)交换中间部分 (通过prev和cur)
(2)连接...
分类:
其他好文 时间:
2016-04-29 19:08:22
阅读次数:
143