用Java语言实现单向链表

来源:百度知道 编辑:UC知道 时间:2024/07/02 21:26:44
单向链表的实现:
1.链表的结点:
一个单向链表是一组结点(数据元素)的序列,每个结点有两个域:数据域和指针域。
2.指针:
指针域存放其后继结点的地址,最后一个结点的指针域为空。头指针head指向链表的第一个结点,当链表为空时,头指针为空值。
3.结点的数据域:
-数据域存放数据,可能是三角形、矩形、圆形三种形状中的任何一种。
-形状除了具有与大小有关的属性外,还有颜色属性。
4.链表需要实现的功能:
(1)生成链表;
-根据输入生成链表
-生成一条长度为6、节点中的形状随机、颜色随机、大小均为10的链表。(其中大小为10的含义是指:三角形或矩形的边长都为10,圆的半径都为10。)
(2)链表中结点的插入与删除;
(3)在链表中删掉某类(三角形、圆形、矩形)的结点
(4)将链表中具有某种颜色A的节点改为颜色B。

1.先定义一个节点类

package com.buren;

public class IntNode {
//定义一个节点类

int
info;
//定义属性,节点中的值
IntNode next;
//定义指向下一个节点的属性

public IntNode(int
i){ //构造一个next为空的节点
this(i,null);
}

public IntNode(int i,IntNode
n){ //构造值为i指向n的节点
info=i;
next=n;
}

}

2.再定义一个链表类,这是主要部分

package com.buren;

public class IntSLList {

private IntNode head,tail;
//定义指向头结点和尾结点的指针,
//如果大家看着这个不像指针的话,那就需要对指针有更深刻的了解

public
IntSLList(){
//定义一个空节点
head=tail=null;
}

public boolean
isEmpty(){
//判断节点是否为空
return
head==null;
//这行代码看起来似乎很神奇,其实真的很神奇,偶是服了
}

public void addToHead(int el){
//将el插入到头结点前
head=new
IntNode(el,head);
//将节点插入到头结点前,作为新的投节点
if(head==tail){