java单链表,Java单链表

本文目录一览:

java数据结构单链表

你的问题很好理解。但是你的代码问题严重。

1、你想用java代码实现还是c代码实现?从你的代码看是c语言

2、第一段代码中的结构体nod是不是应该写成Node?

3、inset函数中,链表L是有变化的,所以要用指针。结点s是不改变的,所以不应该用指针

4、既然s不是用指针,后面的s-next自然也不能这么写了。

用java单链表实现一元多项式相加的算法?

public class Test {

public static void main(String[] args) {

try{

LinkList list1 = new LinkList();

LinkList list2 = new LinkList();

LinkList list3 = null;

list1.addAt(0, new Item(1, 5));

list1.addAt(1, new Item(-1.5, 3));

list1.addAt(2, new Item(1, 1));

list2.addAt(0, new Item(0.5, 5));

list2.addAt(1, new Item(0.5, 4));

list2.addAt(2, new Item(1.5, 3));

list2.addAt(3, new Item(3, 0));

list3 = mergeLinkList(list1, list2);

System.out.println(“一元多项式的相加过程:”);

list1.listAll();

System.out.println(” + “);

list2.listAll();

System.out.println(” = “);

list3.listAll();

}

catch(Exception e){

e.printStackTrace();

}

}

/**

* 一元多项式的一般项类

*/

class Item{

private double coef;  //一元多项式的一般项的系数

private int exp;   //一元多项式的一般项的指数

public Item(){

this.coef = 0.0;

this.exp = 0;

}

public Item(double coef, int exp){

this.coef = coef;

this.exp = exp;

}

public double getCoef(){

return this.coef;

}

public void setCoef(double coef){

this.coef = coef;

}

public int getExp(){

return this.exp;

}

public void setExp(int exp){

this.exp = exp;

}

}

/**

* 链表结点类

*/

class Node{

private Item data;

private Node next;   //链表结点的指针域,指向直接后继结点

public Node(){

data = null;

next = null;

}

public Node(Item data, Node next){

this.data = data;

this.next = next;

}

public Item getData(){

return this.data;

}

public void setData(Item data){

this.data = data;

}

public Node getNext(){

return this.next;

}

public void setNext(Node next){

this.next = next;

}

}

/**

* 链表类

*/

class LinkList{

private Node head = null; //头结点指针

private int size = 0;

public LinkList(){

head = new Node();

size = 0;

}

//在i位置插入元素elem

public boolean addAt(int i, Item elem) {

if(i 0 || i size){

return false;

}

Node pre,curr;

int pos;

for(pre=head; i0 pre.getNext()!=null; i–,pre=pre.getNext());

curr = new Node(elem, pre.getNext());

pre.setNext(curr);

size++;

return true;

}

//删除i位置的元素

public boolean removeAt(int i) {

if(i 0 || i = size){

return false;

}

Node pre,curr;

for(pre=head; i0 pre.getNext()!=null; i–,pre=pre.getNext());

curr = pre.getNext();

pre.setNext(curr.getNext());

size–;

return true;

}

java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。

java 中单链表的equals方法

LinkedList对equals的定义大致是这样的:(下文将equals 写作 相等)

两个链表相等当且仅当其大小相等,并且每个对应元素也相等。

谈到相等,必须谈及hashCode方法,关系如下:

hashCode相等的 可能相等(相等与否需进一步检测)

hashCode不等的 一定不等(排除相等情况)

一般情况下,hashCode的计算一定比equals快,而且‘不等’的情况较多,因此作为判断相等的加速方案,java会先检测hashCode,若不等,则对象一定不等。

那么,对于java的常见类,例如:基本类型包装类、集合类、字符串类等 其 equals 与 hashCode已经写好,不用我们操心。

若是自定义类,一定要重新equals与hashCode方法,满足上述hashCode的2个关系。

例如自己的User类有name和pass,一个简单的方案如下:

public class User{

String name,pass;

//get/set….

public int hashCode() {

return name.hashCode + pass.hashCode();

}

public boolean equals(Object o) {

if(o instanceof User) {

User u = (User)o;

return (name.equals(u.name))(pass.equals(u.pass));

}

return false;

}

}

java单链表根据内容删除节点

代码:

// 删除下标为index的节点

public void remove(int index) {

if (index = modCount) {

// 抛异常

System.out.println(“indexOutOfBoundsException!”);// 最好自定义异常抛出,这里演示

return;

}

Node node = head;

// 如果节点为第一个节点

if (index == 0) {

head = head.next; // 将头节点指向第二个节点

modCount–;

return;

}

// 如果节点为最后一个节点,找到最后一个节点的前一个节点,不用管

if (index == modCount – 1) {

System.out.println(“ddd”);

// 找到最后一个节点的前一个节点

int j = 0;

while (node != null  j  index – 1) {

// 最后一个节点的前一个节点

node = node.next;

j++;

}

last = node; // 最后一个节点设置为前一个节点

modCount–;

return;

}

// 如果节点为中间节点

int j = 0;

while (node != null  j  index – 1) {

// 查找被删除的节点的前一个节点

node = node.next;

j++;

}

node.next = node.next.next; // 被删除节点的下一个节点设置为被删除节点的下下个节点

modCount–;

}

java数据结构。单链表的定位运算

p-next != null

该循环的意思是链表地址指针不能空时,向后遍历链表。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/205928.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-07 17:47
下一篇 2024-12-07 17:47

相关推荐

  • java client.getacsresponse 编译报错解决方法

    java client.getacsresponse 编译报错是Java编程过程中常见的错误,常见的原因是代码的语法错误、类库依赖问题和编译环境的配置问题。下面将从多个方面进行分析…

    编程 2025-04-29
  • Java JsonPath 效率优化指南

    本篇文章将深入探讨Java JsonPath的效率问题,并提供一些优化方案。 一、JsonPath 简介 JsonPath是一个可用于从JSON数据中获取信息的库。它提供了一种DS…

    编程 2025-04-29
  • Java腾讯云音视频对接

    本文旨在从多个方面详细阐述Java腾讯云音视频对接,提供完整的代码示例。 一、腾讯云音视频介绍 腾讯云音视频服务(Cloud Tencent Real-Time Communica…

    编程 2025-04-29
  • Java Bean加载过程

    Java Bean加载过程涉及到类加载器、反射机制和Java虚拟机的执行过程。在本文中,将从这三个方面详细阐述Java Bean加载的过程。 一、类加载器 类加载器是Java虚拟机…

    编程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介绍

    本文将详细介绍Java Milvus SearchParam withoutFields的相关知识和用法。 一、什么是Java Milvus SearchParam without…

    编程 2025-04-29
  • 利用Python实现两个链表合并为一个有序链表

    对于开发工程师来说,实现两个链表合并为一个有序链表是必须掌握的技能之一。Python语言在链表处理上非常便利,本文将从多个方面详细阐述如何利用Python实现两个链表合并为一个有序…

    编程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java语言中的一个版本,于2014年3月18日发布。本文将从多个方面对Java 8中某一周的周一进行详细的阐述。 一、数组处理 Java 8新特性之一是Stream…

    编程 2025-04-29
  • Java判断字符串是否存在多个

    本文将从以下几个方面详细阐述如何使用Java判断一个字符串中是否存在多个指定字符: 一、字符串遍历 字符串是Java编程中非常重要的一种数据类型。要判断字符串中是否存在多个指定字符…

    编程 2025-04-29
  • VSCode为什么无法运行Java

    解答:VSCode无法运行Java是因为默认情况下,VSCode并没有集成Java运行环境,需要手动添加Java运行环境或安装相关插件才能实现Java代码的编写、调试和运行。 一、…

    编程 2025-04-29
  • Java任务下发回滚系统的设计与实现

    本文将介绍一个Java任务下发回滚系统的设计与实现。该系统可以用于执行复杂的任务,包括可回滚的任务,及时恢复任务失败前的状态。系统使用Java语言进行开发,可以支持多种类型的任务。…

    编程 2025-04-29

发表回复

登录后才能评论