用JAVA语言创建链表的方法

链表刚学习时是用c来学习的,那时候对于结构体,指针这些东西实现链表觉得很合适,但想要应用到java上还是有些不同的

这里,我学习下用java来使用链表的方法:

首先,定义节点类

//链表节点
class Node{
protected Node next;
protected int data;
public  Node(int data) {   //构造器来赋值
// TODO Auto-generated constructor stub
this.data=data;
this.next=null;
}
public Node() {}

}

然后,在专门的一个类中写链表的各种操作,符合java面向对象的设计

在这里,我们写下所有的链表操作

1.链表初始化

public Node Initlink(Node node) {  //初始化节点
node=new Node();
node.next=null;
return node;

}

传入的节点是你的头节点,这里我们创建的链表是带头结点的,头结点不带信息,方便与链表操作

2.创建链表

利用while循环,在循环内部创建新节点,利用头插法插入此节点(尾插法节点会改变),理解与C语言中一样,注意输入。public Node createlink(Node node) {    //头插法创建链表
Scanner scanner=new Scanner(System.in);
int data=scanner.nextInt();
 

while (data!=999) {              //输入999结束
Node pNode=new Node(data);
pNode.next=node.next;
node.next=pNode;
data=scanner.nextInt();
}

return node;

}

3.打印链表信息

根据传入的头结点,打印整个链表信息

public void Printlink(Node L) {       //打印输出链表
Node node=L.next;
while(node!=null) {
System.out.println(node.data);
node=node.next;
}

}

写在这差不多完了。如果实现链表的其他操作,根据已创建的链表去实现就很容易了。下面给出完整代码:

package linklist;

import java.util.Scanner;
//链表节点
class Node{
protected Node next;
protected int data;
public  Node(int data) {   //构造器来赋值
// TODO Auto-generated constructor stub
this.data=data;
this.next=null;
}
public Node() {}
}
//链表方法
class Ways{
public Node Initlink(Node node) {  //初始化节点
node=new Node();
node.next=null;
return node;
}
public Node createlink(Node node) {    //头插法创建链表
Scanner scanner=new Scanner(System.in);
int data=scanner.nextInt();

while (data!=999) {              //输入999结束
Node pNode=new Node(data);
pNode.next=node.next;
node.next=pNode;
data=scanner.nextInt();
}

return node;
}
public void Printlink(Node L) {       //打印输出链表
Node node=L.next;
while(node!=null) {
System.out.println(node.data);
node=node.next;
}
}
}
public class Main {


public static void main(String[] args) {
// TODO Auto-generated method stub
Ways ways=new Ways();
Node L=new Node();
        L=ways.Initlink(L);
        System.out.println("请输入你要创建的链表(输入999结束):");
        L=ways.createlink(L);
        ways.Printlink(L);
}
}

 

最后是控制台结果:

怎么样,是不是很符合头插法的特点呢?

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值