`
klts
  • 浏览: 41304 次
  • 性别: Icon_minigender_2
  • 来自: 成都
社区版块
存档分类
最新评论
  • klts: 我一直用的jdk1.6.0_13,感觉还可以
    JDK
  • wuyulunbi: 现在jdk什么版本的稳定
    JDK

单链表实现

 
阅读更多
package com.zi.test;


public class SingleLinkList {
	
	/**
	 * define a class Value for using object of Element
	 * @author Administrator
	 *
	 */
	class Value {
		
	}
	
	class Element {
		Object value = null;
		Element nextNode = null;
	}
	
	private Element header = null;
	
	/**
	 * every time, add a node into front position in linklist.
	 * header is null object, it is for mark nextNode.
	 * insertNode is for add into linklist.
	 * 
	 * 
	 * [header[value|nextNode]]---->[oneNode[value|nextNode]]
	 *                          ^
	 *                          |
	 *               insertNode[value|nextNode]
	 * 
	 */
	public void add(Object node) {
		if(header == null) {
			header = new Element();
			header.value = null;
			header.nextNode = null;
		}
		
		Element insertNode = new Element();
		insertNode.value = node;
		insertNode.nextNode = header.nextNode;
		header.nextNode = insertNode;
	}
	
	/**
	 * header is null, so the linklist has not mark node, that the linklist is null
	 */
	public void clear() {
		header = null;
	}
	
	/**
	 * compare node from header node to end node.
	 * @param node
	 * @return
	 */
	public boolean contain(Object node) {
		if (header == null) return false;
		
		Element eqEl = header.nextNode;
		while (eqEl != null) {
			if (eqEl.value == node) return true;
			eqEl = eqEl.nextNode;
		}
		
		return false;
	}
	
	/**
	 * scan total linklist for getting the size
	 * @return
	 */
	public int size() {
		if (header == null) return 0;
		
		int i = 0;
		Element ele = header.nextNode;
		while(ele != null) {
			i++;
			ele = ele.nextNode;
		}
		return i;
	}
	
	/**
	 * scan total linklist for getObject by index
	 * @param index
	 * @return
	 */
	public Object getObject(int index) {
		if (header == null) return null;
		int size = this.size();
		if (index > size -1 || index < 0) return null;
		
		int i = 0;
		Element ele = header.nextNode;
		while (ele != null) {
			if (i == 0) return ele.value;
			i++;
			ele = ele.nextNode;
		}
		
		return null;
	}
	
	public boolean remove(Object node) {
		if (header == null) return false;
		Element eqPreEl = header;
		Element eqEl = header.nextNode;
		while (eqEl != null) {
			if (eqEl == node) {
				eqPreEl.nextNode = eqEl.nextNode;
				return true;
			}
			eqPreEl = eqEl;
			eqEl = eqEl.nextNode;
		}
		return false;
	}
	
}

 

分享到:
评论

相关推荐

    C++单链表实现大数加法

    C++单链表实现大数加法 大数加法是一种常见的算法问题,特别是在C++中实现大数加法时需要考虑到数字的位数和溢出问题。使用单链表来实现大数加法可以解决这个问题。本文将详细介绍如何使用C++单链表实现大数加法。 ...

    单链表实现用户登录管理

    单链表实现用户登录管理 单链表是一种基本的数据结构,它可以用于实现用户登录管理系统。在本报告中,我们将介绍如何使用单链表实现用户登录管理系统的设计和实现。 课程设计介绍 在计算机科学与技术专业中,数据...

    用单链表实现两个数的相加

    用两个单链表实现两个大型整数的相加。。。。不限制两个数的位数,可以大于整数在计算机的存储

    用单链表实现多项式的运算

    总的来说,用单链表实现多项式运算是一种有效的方法,它充分利用了链表的灵活性,使得多项式的操作变得简单且易于理解。通过这个项目,你可以深入理解链表数据结构,同时增强在实际问题中运用数据结构的能力。在...

    用单链表实现一元多项式的乘法(c++).

    总之,用单链表实现一元多项式的乘法是一种有效的数据结构和算法的结合,它展示了如何利用链表的动态性来处理复杂的数学运算。在C++中实现这一操作需要对链表操作有深入的理解,并能熟练运用数据结构和算法设计思想...

    单链表实现约瑟夫环

    单链表解决约瑟夫环问题

    单链表实现双向循环链表_链表_

    单链表实现双向循环链表单向链表存在一个弊端就是,当需要获取某个结点p的前驱时,需要从头指针开始遍历链表,获得“前驱”的执行时间为O(n),为了克服单向链表的这种缺点,可以利用双向链表。在双向链表中有两个...

    c语言单链表实现通讯录,支持保存数据到文件加载数据到文件

    以上是C语言单链表实现通讯录的主要知识点,这些概念和操作对于理解和实现任何动态数据结构都是至关重要的。通过这个项目,我们可以学习到如何有效地管理内存,以及如何在程序中持久化数据。同时,它也提供了一个...

    利用带头结点的单链表实现两个集合的并、交、差运算.docx

    本文档详细阐述了如何利用带头结点的单链表来实现两个集合的并集、交集和差集运算。 首先,在题目重述部分,我们明确了解决问题的目标,即通过带头结点的单链表结构来构建并、交、差运算的具体实现。头结点的存在是...

    单链表实现集合之间的运算.cpp

    c语言数据结构利用单链表实现集合间的运算

    C++ 数据结构中单链表实现线性表

    链表实现线性表的基本功能,继而更进一步地去活学活用的用好这个基本数据结构,最后更好的编程续写出更完美的程序片段

    一元多项式的加减运算(用单链表实现,编译通过)

    数据结构,用单链表实现一元多项式的加减运算,同学们可以参考……

    单链表实现的多项式运算.cpp

    利用单链表的数据结构,在读取数据时就按指数次方排序好,再加法的运算中可以直接按指数的大小进行运算,相比随机的读入数据,这个方法优化了程序。乘法则是在加法的基础上把每一项的系数进行相乘并最后求和。注意...

    约瑟夫环的单链表实现

    【约瑟夫环的单链表实现】 约瑟夫环问题,又称约瑟夫环序列,是一个著名的理论问题,源自古罗马的一种传说。问题的基本设定是:人们站成一个圈,从某个人开始按顺时针方向报数,每报到特定数值的人会被排除出圈,...

    c++单链表实现功能

    根据给定的文件信息,我们可以总结出以下关于C++单链表实现的关键知识点: ### 1. 序列列表(SeqList)类定义 #### 类模板定义 ```cpp template class SeqList { // 类成员声明 }; ``` - `template &lt;class T&gt;`:...

    实验二单链表实现.doc

    单链表实现实验报告 本实验报告的主要目的是了解单链表的逻辑特点,掌握单链表的定义及 C 语言实现,熟练掌握在单链表中实现各种基本操作,并掌握使用单链表解决一些简单应用问题的编程。 单链表是一种基本的数据...

    单链表实现图书管理系统方案.doc

    "单链表实现图书管理系统方案" 单链表是一种基础的数据结构,它广泛应用于计算机科学和信息技术领域。单链表可以用来实现图书管理系统,通过对单链表的操作,可以实现图书的增、删、改、查等功能。 在本文档中,...

    单链表实现通讯录管理系统

    用单链表实现通讯录管理系统,数据结构充分应用其中

    C++单链表实现源码

    // 以下是自己写的基于C++的双向循环链表的创建及其一些操作与实现(于VC下通过),没用模板, // 也没用类,所以比较适合有一点C++语言基础入门者,但可移植不够.有什么bug的话,欢迎指出。 // 或有什么问题也可以联系...

    数据结构单链表实现大数阶乘(C++)(递归方法)

    单链表结构实现的大数阶乘,VC简单程序复制进去便可实现。采用递归调用的方法。

Global site tag (gtag.js) - Google Analytics