定义节点类
/**
* 链表的节点类
* @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 2 入门与实例教程是一套针对初学者精心设计的编程学习资源,主要涵盖了Java语言的基础概念、语法和实战应用。这份教程旨在帮助读者快速掌握Java编程技能,为今后深入学习和开发实践奠定坚实基础。以下是本教程...
自定义链表(Custom LinkedList)则是对数据结构的学习,链表不同于数组,它在内存中不是连续存储的。Java提供了LinkedList类,但编写自己的链表可以帮助你更好地理解链表的工作原理,包括节点的添加、删除和遍历。 ...
### Java入门学习笔记 #### 一、Java特点与运行原理 **1.1 Java特点** - **简单性:** Java的设计使得它易于学习且避免了许多传统编程语言中存在的复杂性。 - **面向对象:** Java是一种纯面向对象的语言,支持...
第十六章“数据结构之链表”深入讲解了链表的原理和实现,包括单向链表、双向链表以及自定义队列的实现。 第十七章“哈夫曼压缩的实现”涉及了数据压缩的原理,特别是哈夫曼编码算法的实现过程,这对于理解数据压缩...
### Java私塾基础入门教程2:集合框架详解 #### 集合框架基本概念 集合框架是Java编程语言中的一项核心特性,它提供了一系列用于存储和管理对象的接口和类。这一部分着重介绍了集合框架的基本概念及其在Java中的...
根据提供的文件信息,我们可以深入探讨Java快速入门的经典教程所涵盖的关键知识点。这不仅适用于初学者,也适合希望巩固基础知识或快速复习Java语言特性的开发者。 ### Java基础概念 #### 1. Java概述 - **定义**...
### JAVA入门知识点详解 #### 一、JAVA简介 **JAVA**是一种高级编程语言,由Sun Microsystems公司在1995年发布。它具有以下特点: - **简单性**:语法简洁,易于理解和使用。 - **面向对象**:一切皆对象,支持...
在Java编程中实现电话本功能,可以深入理解和掌握面向对象编程、图形用户界面(GUI)设计以及文件操作等相关知识点。 1. **面向对象编程**:在Java中,电话本的每个联系人可以被视为一个对象,包含姓名、电话号码等...
这本书涵盖了从简单的数据类型、控制结构到类、对象和接口的全面内容,是Java入门的绝佳资源。 1. **Java语言基础**: - 数据类型:Java分为基本数据类型(如整型、浮点型、字符型和布尔型)和引用数据类型(如类...
本套入门培训课件聚焦于Java基础中的集合部分,共包含24页内容,旨在帮助初学者深入理解并熟练运用Java集合。 1. 集合接口概述:集合是存储一组不重复对象的容器。Java集合框架包含两个主要接口:List和Set。List...
### JAVA经典教材笔记知识点梳理 #### 第一章:JAVA概述及开发环境搭建 - **Java学习概述** - Java作为一种广泛使用的编程语言,其学习路径包括掌握基本语法、理解面向对象编程思想、熟悉标准库使用等。 - **JAVA...
LinkedList基于双向链表,插入和删除速度快,但随机访问慢。 1.8 Map接口【理解】 Map接口不同于Collection接口,它存储的是键值对(key-value)的数据结构。HashMap、TreeMap、LinkedHashMap和Hashtable是Map接口...
本"零基础Java入门课程-多线程"专为初学者设计,旨在通过最新的Java 14平台,引领学习者逐步掌握Java的基础及多线程相关知识。 Java集合框架是Java编程中的核心组成部分,它提供了对数据结构的有效管理,包括数组、...
而`LinkedList`基于双向链表实现,对于插入和删除操作效率较高,但随机访问性能较差。 在描述中提到的新闻管理系统中,由于需要存储的新闻标题数量不确定,且需要进行增删改查操作,所以选择集合框架是非常合适的。...
在"零基础Java入门课程-集合"中,你将深入学习如何利用这些工具进行有效的编程。本课程覆盖了从基础到进阶的Java集合知识,基于最新的Java 14平台,确保你能够跟上现代编程的步伐。 首先,我们要了解集合的基本概念...
《Java 入门级图书管理系统详解》 Java作为一种广泛应用的编程语言,因其强大的跨平台性和丰富的类库,常被用于开发各种类型的应用程序,其中包括图书管理系统。本系统针对Java初学者设计,旨在帮助他们理解面向...
根据提供的文件信息,以下是对书籍《算法设计、分析与实现从入门到精通:C、C++和Java》的知识点详细分析: 一、C语言编程知识点 1. C语言基础:包括C语言的变量类型、运算符、控制语句(如if-else、switch-case、...
Java编程新手自学手册是一本专为初学者设计的教程,旨在帮助那些对编程感兴趣的人们快速入门Java语言。这份手册包含PPT(演示文稿)和源代码,为学习者提供了理论与实践相结合的全面学习资源。以下是Java编程的一些...