`

Java入门---自定义链表的实现

阅读更多
定义节点类
/**
 * 链表的节点类
 * @author se7en
 *
 */
public class Node {
	public int data;//元素的值
	public Node Next;//链表指针,指向下一个元素
}



链表的实现类
/**
 * 链表的实现类
 * @author se7en
 * 时间:2013年11月11日 23:37:56
 */
public class MyList {
	private Node head = null;//链表的头指针
	private int count = 0;//记录元素的个数
	//添加方法,默认添加到最后
	public void add(Node node){
		add(node,count);
	}
	//添加到指定pos位置
	public void add(Node node,int pos){
		//如果添加未知错误
		if(pos<0||pos>count){
			System.out.println("添加未知错误!");
			return;
		}
		//如果链表为空,直接将头指针指向node
		if(count == 0){
			head = node;
			count++;
			return;
		}
		//定义一个游标指针,并让其指向头节点
		Node flag = head;
		//循环找到要添加位置的上一个节点
		for(int i=0;i<pos-1;i++){
			flag = flag.Next;
		}
		//建立链接,添加元素
		node.Next = flag.Next;
		flag.Next = node;
		count++;
	}
	//删除方法,默认在头删除
	public Node remove(){
		remove(0);
		return null;
	}
	//删除指定位置pos的节点
	public Node remove(int pos){
		//如果删除未知错误
		if(pos<0||pos>count-1){
			System.out.println("删除位置错误!");
			return null;
		}
		//如果链表为空
		if(count == 0){
			System.out.println("链表为空,删除错误!");
			return null;
		}
		//定义一个游标指针flag,并让其指向头节点
		Node flag = head;
		//如果只有一个元素
		if(count == 1){
			head = null;
			count = 0;
			return flag;
		}
		//如果删除的是头节点,修改头指针
		if(pos == 0){
			head = head.Next;
			flag.Next = null;
			count--;
			return flag;
		}
		//其他情况
		//循环找到要删除未位置的前一个
		for(int j=0;j<count-1;j++){
			flag = flag.Next;
		}
		//定义一个临时指针temp,用来标记要删除的节点
		Node temp = flag.Next;
		//建立链接,删除节点
		flag.Next = temp.Next;
		temp.Next = null;
		count--;
		return temp;
	}
	//获取指定位置pos的元素
	public Node get(int pos){
		//定义一个游标指针,并让其指向头节点
		Node flag = head;
		//循环找到pos位置的节点
		for(int k=0;k<pos;k++){
			flag = flag.Next;
		}
		//复制一个要获取的节点,但next指向null
		Node temp = new Node();
		temp.data = flag.data;
		temp.Next = null;
		return temp;
	}
	//获取元素个数的方法
	public int getSize(){
		return count;
	}
}
分享到:
评论

相关推荐

    java入门程序(模拟图书馆管理)

    本项目“java入门程序(模拟图书馆管理)”是针对初学者设计的一个简单的学习资源,它通过使用链表这种数据结构来实现对图书馆书籍的管理功能,帮助初学者理解Java编程以及链表的基本概念。 链表是一种线性数据结构...

    Java 2 入门与实例教程.rar

    Java 2 入门与实例教程是一套针对初学者精心设计的编程学习资源,主要涵盖了Java语言的基础概念、语法和实战应用。这份教程旨在帮助读者快速掌握Java编程技能,为今后深入学习和开发实践奠定坚实基础。以下是本教程...

    java基础知识代码实现,包括冒泡算法,快速算法,九九乘法表,创建多线程的方式,自定义链表,递归使用方式,创建单例等。javaBasicGrammar.zip

    自定义链表(Custom LinkedList)则是对数据结构的学习,链表不同于数组,它在内存中不是连续存储的。Java提供了LinkedList类,但编写自己的链表可以帮助你更好地理解链表的工作原理,包括节点的添加、删除和遍历。 ...

    Java入门学习笔记

    ### Java入门学习笔记 #### 一、Java特点与运行原理 **1.1 Java特点** - **简单性:** Java的设计使得它易于学习且避免了许多传统编程语言中存在的复杂性。 - **面向对象:** Java是一种纯面向对象的语言,支持...

    Java实战入门[一个资深Java培训老师倾力收藏].pdf

    第十六章“数据结构之链表”深入讲解了链表的原理和实现,包括单向链表、双向链表以及自定义队列的实现。 第十七章“哈夫曼压缩的实现”涉及了数据压缩的原理,特别是哈夫曼编码算法的实现过程,这对于理解数据压缩...

    java私塾基础入门教程2

    ### Java私塾基础入门教程2:集合框架详解 #### 集合框架基本概念 集合框架是Java编程语言中的一项核心特性,它提供了一系列用于存储和管理对象的接口和类。这一部分着重介绍了集合框架的基本概念及其在Java中的...

    java快速入门经典教程下载地址

    根据提供的文件信息,我们可以深入探讨Java快速入门的经典教程所涵盖的关键知识点。这不仅适用于初学者,也适合希望巩固基础知识或快速复习Java语言特性的开发者。 ### Java基础概念 #### 1. Java概述 - **定义**...

    JAVA入门.pdf

    ### JAVA入门知识点详解 #### 一、JAVA简介 **JAVA**是一种高级编程语言,由Sun Microsystems公司在1995年发布。它具有以下特点: - **简单性**:语法简洁,易于理解和使用。 - **面向对象**:一切皆对象,支持...

    java课程设计---电话本

    在Java编程中实现电话本功能,可以深入理解和掌握面向对象编程、图形用户界面(GUI)设计以及文件操作等相关知识点。 1. **面向对象编程**:在Java中,电话本的每个联系人可以被视为一个对象,包含姓名、电话号码等...

    java编程艺术 电子稿

    这本书涵盖了从简单的数据类型、控制结构到类、对象和接口的全面内容,是Java入门的绝佳资源。 1. **Java语言基础**: - 数据类型:Java分为基本数据类型(如整型、浮点型、字符型和布尔型)和引用数据类型(如类...

    完整版Java全套入门培训课件 Java基础 06-集合(共24页).rar

    本套入门培训课件聚焦于Java基础中的集合部分,共包含24页内容,旨在帮助初学者深入理解并熟练运用Java集合。 1. 集合接口概述:集合是存储一组不重复对象的容器。Java集合框架包含两个主要接口:List和Set。List...

    JAVA经典教材笔记

    ### JAVA经典教材笔记知识点梳理 #### 第一章:JAVA概述及开发环境搭建 - **Java学习概述** - Java作为一种广泛使用的编程语言,其学习路径包括掌握基本语法、理解面向对象编程思想、熟悉标准库使用等。 - **JAVA...

    JAVA-SE入门学习——第八讲集合

    LinkedList基于双向链表,插入和删除速度快,但随机访问慢。 1.8 Map接口【理解】 Map接口不同于Collection接口,它存储的是键值对(key-value)的数据结构。HashMap、TreeMap、LinkedHashMap和Hashtable是Map接口...

    零基础Java入门课程-多线程

    本"零基础Java入门课程-多线程"专为初学者设计,旨在通过最新的Java 14平台,引领学习者逐步掌握Java的基础及多线程相关知识。 Java集合框架是Java编程中的核心组成部分,它提供了对数据结构的有效管理,包括数组、...

    Java编程实训 Java开发基础入门教程1-10 java集合框架(共27页).pptx

    而`LinkedList`基于双向链表实现,对于插入和删除操作效率较高,但随机访问性能较差。 在描述中提到的新闻管理系统中,由于需要存储的新闻标题数量不确定,且需要进行增删改查操作,所以选择集合框架是非常合适的。...

    零基础Java入门课程-集合

    在"零基础Java入门课程-集合"中,你将深入学习如何利用这些工具进行有效的编程。本课程覆盖了从基础到进阶的Java集合知识,基于最新的Java 14平台,确保你能够跟上现代编程的步伐。 首先,我们要了解集合的基本概念...

    java_入门级图书管理系统_

    《Java 入门级图书管理系统详解》 Java作为一种广泛应用的编程语言,因其强大的跨平台性和丰富的类库,常被用于开发各种类型的应用程序,其中包括图书管理系统。本系统针对Java初学者设计,旨在帮助他们理解面向...

    分析与实现从入门到精通:C、C.和Java].徐子珊.pdf

    根据提供的文件信息,以下是对书籍《算法设计、分析与实现从入门到精通:C、C++和Java》的知识点详细分析: 一、C语言编程知识点 1. C语言基础:包括C语言的变量类型、运算符、控制语句(如if-else、switch-case、...

    Java编程新手自学手册:Java编程新手自学手册

    Java编程新手自学手册是一本专为初学者设计的教程,旨在帮助那些对编程感兴趣的人们快速入门Java语言。这份手册包含PPT(演示文稿)和源代码,为学习者提供了理论与实践相结合的全面学习资源。以下是Java编程的一些...

Global site tag (gtag.js) - Google Analytics