用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);
}
}

 

最后是控制台结果:

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

发布了68 篇原创文章 · 获赞 57 · 访问量 8万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览