java 实验 类的继承_JAVA实验2 类和继承(2学时)List类

该博客介绍了如何使用Java实现链表数据结构,包括创建链表、判断链表是否为空、获取链表长度、在表头和表尾添加元素、获取指定位置的数据、插入和删除元素,以及遍历链表并打印所有元素的方法。通过示例代码展示了这些操作的实现过程。
摘要由CSDN通过智能技术生成

package List;

public class List

{

private static class Node

{

T nodeValue;

Node next;

Node(T nodeValue, Node next)

{

this.nodeValue=nodeValue;

this.next =next;

}

Node(T nodeValue)

{

this.nodeValue=nodeValue;

this.next=null;

}

}

private Node head,p,q,m;

public List()

{

head=null;

}

public boolean isEmpty()//判断链表是否为空

{

if(head==null)

{

return true;

}

else

{

return false;

}

}

public int Length()//返回当前链表中对象的个数

{

int size=0;

p=head;

while(p!=null)

{

size++;

p=p.next;

}

return size;

}

public void Add(T value) //在表尾添加某个对象

{

q=head;

p=new Node(value);

if(!isEmpty())

{

while(q.next!=null)

{

q=q.next;

}

q.next=p;

p.next=null;

}

else

{

p.next=head;

head=p;

}

}

public void AddHead(T value)//在表头添加某个对象

{

p=new Node(value);

p.next=head;

head=p;

}

public void getData(int n)//取得某个位置的对象。构造main函数进行测试。

{

int count=1;

if(n>Length())

{

System.out.println("对不起,你输入的值已超出范围");

}

else

{

p=head;

while(p!=null)

{

if(count==n)

{

System.out.println("第"+n+"个数值为:"+p.nodeValue);

break;

}

count++;

p=p.next;

}

}

}

public void Insert(int n,T value)//在某个位置插入对象

{

int count=1;

p=head;

m=new Node(value);

while(p!=null)

{

if(count==n)

{

if(p!=head)

{

q.next=m;

m.next=p;

}

else

{

m.next=head;

head=m;

}

}

count++;

q=p;

p=p.next;

}

}

public void Delete(int n)//在某个位置删除对象

{

int count=1;

p=head;

while(p!=null)

{

if(count==n)

{

if(p!=head)

{

q.next=p.next;

}

else

{

head=head.next;

}

}

count++;

q=p;

p=p.next;

}

}

public void Delete_v(T x)//删除链表中与x相同的元素

{

p=head;

int flag=0;

while(p!=null)

{

if(p.nodeValue==x)

{

flag=1;

if(p!=head)

{

q.next=p.next;

}

else

{

head=head.next;

}

}

q=p;

p=p.next;

}

if(flag==0)

{

System.out.println("对不起没有找到元素:"+x);

}

}

public void Traverse()//遍历链表,打印出所有的元素

{

p=head;

System.out.print("遍历链表:");

while(p!=null)

{

System.out.print(p.nodeValue);

System.out.print(" ");

p=p.next;

}

System.out.println();

}

public static void main(String args[])

{

List L = new List();

L.Add(4);

if(!L.isEmpty())

{

System.out.println("不空");

}

else

{

System.out.println("空");

}

L.Add(67);

L.Add(55);

L.AddHead(55);

L.AddHead(3);

for(int i=0;i<=L.Length();i++)

{

L.getData(i);

}

L.Traverse();

L.Insert(1,9);

L.Delete(5);

L.Delete(2);

L.Delete_v(5);

L.Delete_v(55);

L.Traverse();

}

}

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2012-01-18 11:19

浏览 460

评论

一、实验目的 掌握根据实际需求设计Java的方法; 掌握Java继承的使用方法; 掌握Java中package的概念和使用方法; 掌握静态方法的定义和使用方法; 掌握Object中equals方法和toString方法的覆盖方法。 二、实验内容 1、设计一个名为figure的图形软件包(package)。包中包含三角形、矩形、圆三个。要求:(1)每个都要构造方法并为成员设置get和set方法;(2)每个都要有计算周长和面积的成员方法;(3)完成该软件包后的编码后,在另一个包的含有main方法的中编写代码,分别使用图形软件包中的三个,生成三个对象,并打印出其周长和面积。 2、编写Factorial,为其添加两个静态方法(方法名自定义)。其中一个使用递归计算n的阶乘,一个使用非递归计算n的阶乘。构造main方法进行测试。 3、按照要求使用Java进行编码。 设计一个教师Teacher,属性有编号(no)、姓名(name)、年龄(age)、所属学院(seminary),为这些属性设置相应的get和set方法; 为Teacher重写equals方法;(当两个教师对象的no相同时返回true) 重写Teacher的toString方法,通过该方法可以返回“编号为**、姓名为**、年龄为**的**学院老师”形式的字符串。 构造main方法进行测试。 4、设计一个带表头的单链表(链表中的元素属于同一型对象,但对象的型可以随意),提供以下操作:(1)insert:在某个位置插入对象;(2)delete:在某个位置删除对象;(3)delete:删除链表中与x相同的元素;(4)size:返回当前链表中对象的个数;(5)isEmpty:判断链表是否为空;(6)traverse:遍历链表,打印出所有的元素;(7)getData:取得某个位置的对象。构造main函数进行测试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值