java实现线性链表
package list; public class LineList { Object[] elem; int current; int size; public LineList() { this(100);//初始化生成一个100个元素的数组 } public LineList(int a) { elem = new Object[a]; size = a; current = 0; } //方法用来判断数组大小是否还够用 public void enhanceSize() { if (current == size) { size+=10; Object[] newElem = new Object[size]; int n=0; for(Object obj:elem){ newElem[n]=obj; n++; } elem = newElem; } } //添加元素 public void add(Object e){ enhanceSize(); elem[current]=e; current++; } // 获取元素 public Object get(int index){ return elem[index]; } }
单链表;
1)节点定义:
package linekedList; public class NodeDemo { int data; NodeDemo next; }
2)单链表;
package linekedList; public class LinkedListDemo { NodeDemo head = new NodeDemo(); NodeDemo currentNode = head; //尾插法添加元素 public void add(int e) { NodeDemo newNode = new NodeDemo(); newNode.data = e; currentNode.next = newNode; currentNode = newNode; } 获得指定序号的元素 public Object get(int index) { int i = 0; NodeDemo nodep = head; while ((nodep.next != null) && i < index) { nodep = nodep.next; i++; } return nodep.data; } //链表的插入 public void insertList(int index, int e) { if (index <= 0) { System.out.println("插入位置不合法!!!"); } else { NodeDemo newNode = new NodeDemo(); newNode.data = e; int i = 0; NodeDemo nodep = head; while ((nodep.next != null) && i < index) { nodep = nodep.next; i++; } newNode.next = nodep.next; nodep.next = newNode; } } //两个有序链表的合并,合并后为一个有序链表 public LinkedListDemo mergeLinkedList(LinkedListDemo lB) { NodeDemo lANode = this.head.next; NodeDemo lBNode = lB.head.next; LinkedListDemo lC = new LinkedListDemo(); NodeDemo currentNode = lC.head; while (lANode != null && lBNode != null) { if (lANode.data <= lBNode.data) { currentNode.next = lANode; currentNode = lANode; lANode = lANode.next; System.out.println("A的"); } else { currentNode.next = lBNode; currentNode = lBNode; lBNode = lBNode.next; System.out.println("B的"); } } if (lANode != null) { currentNode.next = lANode; } else { currentNode.next = lBNode; } return lC; } }
相关推荐
本文将通过两个部分来介绍线性表的实现和应用:顺序表的实现与应用和单链表的实现与应用。 顺序表的实现与应用 顺序表是一种基本的线性表结构,它的特点是将数据元素存储在连续的存储单元中。通过实现顺序表的基本...
总结来说,这个实验报告详细探讨了如何使用Java实现线性表的两种主要形式——顺序表和单链表,并通过具体的应用示例(如约瑟夫斯问题、链表操作、排序和合并)加深了对这两种数据结构的理解。同时,还涉及到了接口...
《数据结构(Java版) 线性表的实现与应用》是一份详细的实验报告,主要探讨了在Java环境下如何实现和应用线性表。线性表是数据结构中的基础概念,它是一种逻辑上相邻的元素构成的有序序列。这份报告涵盖了顺序表和...
本实验主要涉及两种线性表的实现方式:顺序表和单链表,并通过Java语言进行编程实现。 1. **顺序表的实现与应用** - **接口LList**:定义了线性表的基本操作,如判断是否为空、获取长度、获取和设置元素、插入和...
在设计和实现这些操作时,我们需要考虑效率,比如插入和删除操作的时间复杂度,以及如何利用数据结构特性减少不必要的操作。 总之,无论是顺序表还是单链表,它们都是数据结构的基础,熟练掌握它们的实现和应用,有...
在Java中,线性表可以采用两种主要的实现方式:顺序表和链表。本实验报告主要关注这两种实现方式,并通过编程实践理解和应用线性表。 1. **顺序表的实现与应用** 顺序表是用数组来存储线性表的数据元素,具有连续...
4. C/C++ 自定义线性表和链表:程序员可以自定义线性表结构,如单链表、双链表等,实现动态内存管理和元素操作。 选择哪种实现取决于具体需求,如是否需要快速随机访问,以及插入和删除的频率。 线性表在多种算法...
在Java中,线性表的实现通常有两种方式:顺序表和链表。 顺序表是一种静态存储结构,它在内存中占用一段连续的空间,元素按顺序依次存储。在Java中,可以通过数组来实现顺序表。接口LList定义了顺序表的基本操作,...
这些习题涵盖了基础的Java编程技巧,如控制流、数组操作,以及数据结构中的线性表概念,如链表的构造、遍历和操作。同时,它们还强调了面向对象编程的思想,如类的设计和接口的实现。通过解决这些习题,学生可以巩固...
在Java编程中,单链表是一种常见的数据...通过这些基本操作,我们可以灵活地对单链表进行操作,实现数据的有序插入、链表的反转以及多个有序链表的合并。理解并掌握这些操作对于理解和使用链表这种数据结构至关重要。
总结以上,线性结构主要包括数组和链表两种主要实现,以及特殊的栈和队列结构。在处理一元多项式等复杂问题时,可以根据需要选择合适的存储结构,如顺序存储或链式存储,以实现高效的运算。理解和掌握线性结构及其...
- 应用中,单链表用于表示一元多项式,并实现加减运算,同时保持链表结构不变,这需要理解和掌握链表的特性,以及如何在现有结构上进行修改。 3. **约瑟夫环问题**: - 这是一个经典的算法问题,通过模拟报数过程...
线性表的实现通常有两种主要方式:顺序表和链表。 **顺序表**是将所有元素在内存中连续存放,通过元素的索引来访问。在Java中,可以使用数组来实现顺序表。顺序表的优点是访问速度快,因为数组的元素可以通过索引...
《数据结构(Java版)》课程实验选题涵盖了线性表、循环链表、双链表、循环双链表以及树和二叉树等数据结构的基本操作。这些实验旨在加深学生对数据结构的理解,提高其编程能力和算法分析能力。以下是各个实验题目所...
7. **合并链表**:将两个已排序的链表合并成一个有序的链表。 8. **排序链表**:对链表中的元素进行排序,可以使用插入排序、快速排序等算法。 9. **复制链表**:创建链表的一个副本,保持原有的结构和元素。 10....
实验2.2则涵盖了单链表的各种操作,如构造链表、查找元素、包含检查、删除元素、替换元素以及首尾相接的两条链表的合并,这些都是理解和掌握链表特性的基本练习。复制单链表实验要求创建链表的一个深拷贝,需要特别...
1.1、实现集合:本设计的目的是让学习者熟悉单链表的结构和操作,如添加元素、删除元素以及遍历链表。同时,通过实现集合的运算,学习者将能够理解如何在两个链表之间进行复杂的运算操作,比如合并两个集合、检查...
在深入探讨数据结构和算法之前,首先需要理解Java编程语言的基础以及其面向对象的特性。 **1.1 Java语言基础知识** - **基本数据类型及运算** - Java支持多种基本数据类型,包括整型(`byte`, `short`, `int`, `...
- **解答**:定义双链表节点结构,实现线性表接口中规定的方法。 **习2.11:实验2.5建立按升序排序的循环双链表** - **题目**:建立一个升序排序的循环双链表。 - **解答**:类似于单链表的排序,但在循环结构中...