三、JAVA链表的实现——ListNode
1.链表概念
链表是一种数据结构:由数据和指针构成,链表的指针指向下一个节点。 链表 是用Java自定义实现的链表结构,在Java中用需要自己定义一个ListNode类来生成链表对象。
2.ListNode
编程题当中,当需要用到ListNode的时候需要这样初始化,同时,下面的代码默认ListNode中装的是int,这里的int也可以改为其他,如char,string
- 在节点ListNode定义中,定义为节点为结构变量。
- 节点存储了两个变量:value 和 next。value 是这个节点的值,next 是指向下一节点的指针,当 next 为空指针时,这个节点是链表的最后一个节点。
- 注意注意val只代表当前指针的值,比如p->val表示p指针的指向的值;而p->next表示链表下一个节点,也是一个指针。
- 构造函数包含两个参数 _value 和 _next ,分别用来给节点赋值和指定下一节点
- 也有只有一个参数的构造方法,一般是存值,然后指针会默认指向null,可以应用于哨兵结点等
//初始化
class ListNode { //类名 :Java类就是一种自定义的数据结构
int val; //成员变量:数值
ListNode next; //对象 :引用下一个节点对象。在Java中没有指针的概念,Java中的引用和C语言的指针类似
ListNode(int val){ //一个参数的构造方法
this.val=val; //把接收的参数赋值给当前类的val变量
}
ListNode(int val, ListNode next) { this.val = val; this.next = next; }//这个就是包含两个参数的构造方法
}
//创建及遍历链表
class ListNode {
int val;
ListNode next;
ListNode(int val){
this.val=val;
}
}
class Test{
public static void main(String[] args){
ListNode Listnode = new ListNode(0); //创建首节点,节点的val是0.
ListNode nextNode; //声明一个变量用来在移动过程中指向当前节点
nextNode=Listnode; //指向首节点,这样两个结点的指针指向同一个结点
//创建链表
for(int i=1;i<10;i++){
ListNode node = new ListNode(i); //生成新的节点
nextNode.next=node; //把新节点连起来
nextNode=nextNode.next; //当前节点往后移动
} //当for循环完成之后 nextNode指向最后一个节点,
nextNode=Listnode; //重新赋值让它指向首节点
print(nextNode); //打印输出
}
//打印输出方法
static void print(ListNode listNoed){
//创建链表节点
while(listNoed!=null){
System.out.println("节点:"+listNoed.val);
listNoed=listNoed.next;
}
System.out.println();
}
}