`
u012901117
  • 浏览: 1807 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Java实现线性表和单链表以及链表的合并

阅读更多

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版)-线性表的实现与应用完整版.doc

    本文将通过两个部分来介绍线性表的实现和应用:顺序表的实现与应用和单链表的实现与应用。 顺序表的实现与应用 顺序表是一种基本的线性表结构,它的特点是将数据元素存储在连续的存储单元中。通过实现顺序表的基本...

    数据结构(Java版) 线性表的实现与应用完整版 (2).docx

    总结来说,这个实验报告详细探讨了如何使用Java实现线性表的两种主要形式——顺序表和单链表,并通过具体的应用示例(如约瑟夫斯问题、链表操作、排序和合并)加深了对这两种数据结构的理解。同时,还涉及到了接口...

    数据结构(Java版) 线性表的实现与应用完整版.pdf

    《数据结构(Java版) 线性表的实现与应用》是一份详细的实验报告,主要探讨了在Java环境下如何实现和应用线性表。线性表是数据结构中的基础概念,它是一种逻辑上相邻的元素构成的有序序列。这份报告涵盖了顺序表和...

    数据结构(Java版)线性表的实现和应用完整版.pdf

    本实验主要涉及两种线性表的实现方式:顺序表和单链表,并通过Java语言进行编程实现。 1. **顺序表的实现与应用** - **接口LList**:定义了线性表的基本操作,如判断是否为空、获取长度、获取和设置元素、插入和...

    数据结构(Java版)线性表的实现和应用完整版 (2).pdf

    在设计和实现这些操作时,我们需要考虑效率,比如插入和删除操作的时间复杂度,以及如何利用数据结构特性减少不必要的操作。 总之,无论是顺序表还是单链表,它们都是数据结构的基础,熟练掌握它们的实现和应用,有...

    数据结构(Java版) 线性表的实现与应用完整版.doc

    在Java中,线性表可以采用两种主要的实现方式:顺序表和链表。本实验报告主要关注这两种实现方式,并通过编程实践理解和应用线性表。 1. **顺序表的实现与应用** 顺序表是用数组来存储线性表的数据元素,具有连续...

    01-绪论和线性表1

    4. C/C++ 自定义线性表和链表:程序员可以自定义线性表结构,如单链表、双链表等,实现动态内存管理和元素操作。 选择哪种实现取决于具体需求,如是否需要快速随机访问,以及插入和删除的频率。 线性表在多种算法...

    最新数据结构(Jva版)-线性表的实现与应用完整版.pdf

    在Java中,线性表的实现通常有两种方式:顺序表和链表。 顺序表是一种静态存储结构,它在内存中占用一段连续的空间,元素按顺序依次存储。在Java中,可以通过数组来实现顺序表。接口LList定义了顺序表的基本操作,...

    《数据结构Java版》习题解答..doc

    这些习题涵盖了基础的Java编程技巧,如控制流、数组操作,以及数据结构中的线性表概念,如链表的构造、遍历和操作。同时,它们还强调了面向对象编程的思想,如类的设计和接口的实现。通过解决这些习题,学生可以巩固...

    JAVA单链表的简单操作(递增单链表插入数据,链表逆置,链表逆序合成)

    在Java编程中,单链表是一种常见的数据...通过这些基本操作,我们可以灵活地对单链表进行操作,实现数据的有序插入、链表的反转以及多个有序链表的合并。理解并掌握这些操作对于理解和使用链表这种数据结构至关重要。

    线性结构总结和习题( 数据结构 )

    总结以上,线性结构主要包括数组和链表两种主要实现,以及特殊的栈和队列结构。在处理一元多项式等复杂问题时,可以根据需要选择合适的存储结构,如顺序存储或链式存储,以实现高效的运算。理解和掌握线性结构及其...

    最新数据结构(Jva版)-线性表的实现与应用完整版.docx

    - 应用中,单链表用于表示一元多项式,并实现加减运算,同时保持链表结构不变,这需要理解和掌握链表的特性,以及如何在现有结构上进行修改。 3. **约瑟夫环问题**: - 这是一个经典的算法问题,通过模拟报数过程...

    数据结构线性表的实现与应用完整版.docx

    线性表的实现通常有两种主要方式:顺序表和链表。 **顺序表**是将所有元素在内存中连续存放,通过元素的索引来访问。在Java中,可以使用数组来实现顺序表。顺序表的优点是访问速度快,因为数组的元素可以通过索引...

    《数据结构(Java版)》课程实验选题.pdf

    《数据结构(Java版)》课程实验选题涵盖了线性表、循环链表、双链表、循环双链表以及树和二叉树等数据结构的基本操作。这些实验旨在加深学生对数据结构的理解,提高其编程能力和算法分析能力。以下是各个实验题目所...

    LinearList-s.zip_LinearList

    7. **合并链表**:将两个已排序的链表合并成一个有序的链表。 8. **排序链表**:对链表中的元素进行排序,可以使用插入排序、快速排序等算法。 9. **复制链表**:创建链表的一个副本,保持原有的结构和元素。 10....

    《数据结构&#40;Java版&#41;&#40;第2版&#41;》习题解答.doc

    实验2.2则涵盖了单链表的各种操作,如构造链表、查找元素、包含检查、删除元素、替换元素以及首尾相接的两条链表的合并,这些都是理解和掌握链表特性的基本练习。复制单链表实验要求创建链表的一个深拷贝,需要特别...

    数据结构—集合运算实现 实现报告(含代码)

    1.1、实现集合:本设计的目的是让学习者熟悉单链表的结构和操作,如添加元素、删除元素以及遍历链表。同时,通过实现集合的运算,学习者将能够理解如何在两个链表之间进行复杂的运算操作,比如合并两个集合、检查...

    Java数据结构和算法

    在深入探讨数据结构和算法之前,首先需要理解Java编程语言的基础以及其面向对象的特性。 **1.1 Java语言基础知识** - **基本数据类型及运算** - Java支持多种基本数据类型,包括整型(`byte`, `short`, `int`, `...

    数据结构(java版)习题解答

    - **解答**:定义双链表节点结构,实现线性表接口中规定的方法。 **习2.11:实验2.5建立按升序排序的循环双链表** - **题目**:建立一个升序排序的循环双链表。 - **解答**:类似于单链表的排序,但在循环结构中...

Global site tag (gtag.js) - Google Analytics