Link 提供以下API
addFirst,removeFirst
getLength
hasNext
next
reset
insertAfter
removeAfter
indexOf
Node 是辅助结构,为了简便,没有使用标准的set,get方法,并且假设存储的内容是非负整数。
该结构实现单向单端链表最简化结构,只提供相对于此数据结构实现起来非常方便的方法。如只提供insertAfter而没有提供insertBefore。
class Node {
private int value;
private Node next;
Node(int value) {
this.value = value;
}
int value() {
return value;
}
void next(Node next) {
this.next = next;
}
Node next() {
return next;
}
}
class Link {
private Node first;
private int length;
private Node current;
void addFirst(int value) {
Node node = new Node(value);
node.next(first);
first = node;
length++;
}
int removeFirst() {
if(first == null) return -1;
int result = first.value();
first = first.next();
length--;
return result;
}
int getLength() {
return length;
}
boolean hasNext() {
return current == null? first != null : current.next() != null;
}
int next() {
current = (current == null? first : current.next());
return current.value();
}
void reset() {
current = null;
}
void insertAfter(int value) {
if(current == null) addFirst(value);
else {
Node node = new Node(value);
node.next(current.next());
current.next(node);
length++;
}
}
int removeAfter() {
if(current == null) return removeFirst();
if(current.next() == null) return -1;
int result = current.next().value();
current.next(current.next().next());
return result;
}
int indexOf(int value) {
int i = 0;
Node temp = first;
while(temp != null) {
if(temp.value() == value) return i;
temp = temp.next();
i++;
}
return -1;
}
}
分享到:
相关推荐
本文将深入探讨两种重要的线性数据结构——单向链表和双向链表,以及它们在实际编程中的应用。 单向链表是一种线性数据结构,它的每个元素(称为节点)包含两部分:数据域,用于存储实际的数据;指针域,用于存储下...
1.航班管理员可以——添加航班——查询航班信息——修改航班信息——查询乘客信息(管理员登陆口令:123456) 2.乘客可以——查询航班信息——订票——退票 3.航班链表为单向顺序链表,乘客链表为双向非循环顺序链表
04.单向链表以及单向链表的应用.ppt
与单向链表不同,双向循环链表的每个节点不仅有指向前一个节点的指针,还有指向下个节点的指针,而且链表的末尾会链接回链表的头部,形成一个循环。这样的设计使得在链表中进行前后移动变得更为高效,比如在乘客列表...
### C语言单向链表的建立与操作 #### 背景介绍 在计算机科学领域,链表是一种常见的数据结构,用于存储一系列元素。每个元素(通常称为节点)包含一个数据部分以及一个指向下一个节点的指针。链表分为单向链表、...
单向链表是一种基本的数据结构,它在计算机科学和编程中有着广泛的应用。与数组不同,链表中的元素不是在内存中连续存储的,而是通过指针或引用连接在一起,形成一个逻辑上的线性序列。单向链表的每个节点包含两部分...
单向链表是一种基本的数据结构,它在计算机科学中被广泛应用,特别是在算法和数据结构的实现中。在Java编程中,单向链表通常通过定义一个节点类来实现,每个节点包含数据和指向下一个节点的引用。下面我们将深入探讨...
本主题将深入探讨由C语言实现的单向链表(slist.h)和双向链表(blist)。这两种链表各有特点,适用于不同的场景,对于理解和掌握数据结构与算法至关重要。 ### 单向链表(slist.h) 单向链表是一种线性数据结构,...
单向链表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。在C++编程中,为了实现通用性,我们通常会使用模板类来创建单向链表,以便它可以处理不同类型的元素。标题"单向链表类...
本文将详细讲解如何在C#中实现单向链表,结合源码解析来帮助你深入理解其内部机制。 首先,我们要知道什么是单向链表。单向链表是由一系列节点组成,每个节点包含两个部分:数据域和指针域。数据域存储实际的数据,...
本篇将详细讲解两个VC(Visual C++)环境下的链表模板类实例:单向链表和双向链表。 首先,单向链表(Singly Linked List)每个节点只包含一个指向下一个节点的指针。这种链表的插入和删除操作通常比数组更快,因为...
Java SE程序 类实现单向链表Java SE程序 类实现单向链表Java SE程序 类实现单向链表Java SE程序 类实现单向链表Java SE程序 类实现单向链表Java SE程序 类实现单向链表Java SE程序 类实现单向链表Java SE程序 类实现...
c语言实现单向循环链表
### C#实现单向链表 #### 一、引言 单向链表是一种常见的数据结构,在计算机科学中被广泛应用于解决各种问题。它由一系列节点组成,每个节点包含一个数据元素以及指向下一个节点的引用。本文将详细介绍如何在C#中...
本资源提供的是针对初学者设计的链表学习材料,包括单向链表和双向链表的实现。下面将详细讲解这两种链表的数据结构及其操作。 1. **单向链表**: 单向链表是一种线性数据结构,每个节点包含两部分:数据域和指针...
这是一个单向链表,它具有插入与删除节点的功能。Entry类实现了链表的各节点。
已知head指向一个带头结点的单向链表, 链表中每个结点包含数据域(data)和指针域(next)。 请编写函数实现如图所示链表逆置
单向循环链表是计算机科学中一种基本的数据结构,它在数据存储和处理中起着重要作用。本资源提供了单向循环链表的源码实现,旨在帮助读者更好地理解和掌握这一概念。下面,我们将深入探讨单向循环链表的定义、特性、...
单向循环链表是一种常见的数据结构,它在计算机科学中有着广泛的应用,特别是在实现动态数据集合,如列表或队列时。在这个压缩包文件“单向循环链表.zip”中,包含了两个源代码文件——LoopSingle.java和List.java,...
在C++中,链表可以被实现为类结构,以支持单向链表和双向链表两种形式。这里我们将深入探讨如何用VC++实现这两种链表。 首先,我们来理解链表的基本概念。链表不同于数组,它不是连续存储数据的结构。每个链表节点...