`
shenyu
  • 浏览: 123020 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Link 单向单端链表

阅读更多

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 楼 baibai326 2008-05-21  
逻辑有问题……

相关推荐

    数据结构 单向链表 双向链表 源程序

    本文将深入探讨两种重要的线性数据结构——单向链表和双向链表,以及它们在实际编程中的应用。 单向链表是一种线性数据结构,它的每个元素(称为节点)包含两部分:数据域,用于存储实际的数据;指针域,用于存储下...

    航班管理系统 单向顺序链表 双向非循环顺序链表

    1.航班管理员可以——添加航班——查询航班信息——修改航班信息——查询乘客信息(管理员登陆口令:123456) 2.乘客可以——查询航班信息——订票——退票 3.航班链表为单向顺序链表,乘客链表为双向非循环顺序链表

    04.单向链表以及单向链表的应用.ppt

    04.单向链表以及单向链表的应用.ppt

    航班订票系统(单向,双向循环链表)

    与单向链表不同,双向循环链表的每个节点不仅有指向前一个节点的指针,还有指向下个节点的指针,而且链表的末尾会链接回链表的头部,形成一个循环。这样的设计使得在链表中进行前后移动变得更为高效,比如在乘客列表...

    C语言单向建立链表的代码实现

    ### C语言单向链表的建立与操作 #### 背景介绍 在计算机科学领域,链表是一种常见的数据结构,用于存储一系列元素。每个元素(通常称为节点)包含一个数据部分以及一个指向下一个节点的指针。链表分为单向链表、...

    单向链表 代码架构

    单向链表是一种基本的数据结构,它在计算机科学和编程中有着广泛的应用。与数组不同,链表中的元素不是在内存中连续存储的,而是通过指针或引用连接在一起,形成一个逻辑上的线性序列。单向链表的每个节点包含两部分...

    单向链表源代码

    单向链表是一种基本的数据结构,它在计算机科学中被广泛应用,特别是在算法和数据结构的实现中。在Java编程中,单向链表通常通过定义一个节点类来实现,每个节点包含数据和指向下一个节点的引用。下面我们将深入探讨...

    C语言实现的单向链表和双向链表

    本主题将深入探讨由C语言实现的单向链表(slist.h)和双向链表(blist)。这两种链表各有特点,适用于不同的场景,对于理解和掌握数据结构与算法至关重要。 ### 单向链表(slist.h) 单向链表是一种线性数据结构,...

    单向链表类模板_单向链表类模板_fastchq_

    单向链表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。在C++编程中,为了实现通用性,我们通常会使用模板类来创建单向链表,以便它可以处理不同类型的元素。标题"单向链表类...

    C#单向链表的实现

    本文将详细讲解如何在C#中实现单向链表,结合源码解析来帮助你深入理解其内部机制。 首先,我们要知道什么是单向链表。单向链表是由一系列节点组成,每个节点包含两个部分:数据域和指针域。数据域存储实际的数据,...

    VC 单向/双向链表模板类实例二则.rar

    本篇将详细讲解两个VC(Visual C++)环境下的链表模板类实例:单向链表和双向链表。 首先,单向链表(Singly Linked List)每个节点只包含一个指向下一个节点的指针。这种链表的插入和删除操作通常比数组更快,因为...

    Java SE程序 类实现单向链表

    Java SE程序 类实现单向链表Java SE程序 类实现单向链表Java SE程序 类实现单向链表Java SE程序 类实现单向链表Java SE程序 类实现单向链表Java SE程序 类实现单向链表Java SE程序 类实现单向链表Java SE程序 类实现...

    c语言实现单向循环链表

    c语言实现单向循环链表

    C#实现单向链表C# .net 链表 单向链表

    ### C#实现单向链表 #### 一、引言 单向链表是一种常见的数据结构,在计算机科学中被广泛应用于解决各种问题。它由一系列节点组成,每个节点包含一个数据元素以及指向下一个节点的引用。本文将详细介绍如何在C#中...

    C语言自学链表,单向链表,双向链表,适合新手学习。

    本资源提供的是针对初学者设计的链表学习材料,包括单向链表和双向链表的实现。下面将详细讲解这两种链表的数据结构及其操作。 1. **单向链表**: 单向链表是一种线性数据结构,每个节点包含两部分:数据域和指针...

    Java 单向链表 插入与删除节点

    这是一个单向链表,它具有插入与删除节点的功能。Entry类实现了链表的各节点。

    已知head指向一个带头结点的单向链表

    已知head指向一个带头结点的单向链表, 链表中每个结点包含数据域(data)和指针域(next)。 请编写函数实现如图所示链表逆置

    数据结构:单向循环链表源码

    单向循环链表是计算机科学中一种基本的数据结构,它在数据存储和处理中起着重要作用。本资源提供了单向循环链表的源码实现,旨在帮助读者更好地理解和掌握这一概念。下面,我们将深入探讨单向循环链表的定义、特性、...

    单向循环链表.zip

    单向循环链表是一种常见的数据结构,它在计算机科学中有着广泛的应用,特别是在实现动态数据集合,如列表或队列时。在这个压缩包文件“单向循环链表.zip”中,包含了两个源代码文件——LoopSingle.java和List.java,...

    用VC++实现的单向和双向链表

    在C++中,链表可以被实现为类结构,以支持单向链表和双向链表两种形式。这里我们将深入探讨如何用VC++实现这两种链表。 首先,我们来理解链表的基本概念。链表不同于数组,它不是连续存储数据的结构。每个链表节点...

Global site tag (gtag.js) - Google Analytics