上篇文章中,我们已经将链表成功创建,接下来,我们就对链表进行基本操作
(这么认真的up主,真的不给个三连嘛~)
1.遍历链表
和顺序表一样,在对链表进行增删查改之前,要先对链表进行遍历,以方便我们后续的操作
那么如何遍历我们的数组呢,其实很简单,我们只需要让head = head.next。如图
想要打印所有值,还需一个循环,循环条件是head !=null,如图,head为空,即head走到了56后面的位置,所有元素也就随之遍历完成
但是,用head,等链表遍历完成之后,则会不知道整个链表的头在哪,所以,我们可以定义一个引用(cur),让这个引用等于head,并且代替head往下遍历
代码如下
public void display() {
ListNode cur = head;
while (cur != null) {
System.out.print(cur.val+" ");
cur = cur.next;//cur每次向后走一部
}
System.out.println();
}
在测试类进行方法调用
代码如下
public class test {
public static void main(String[] args) {
MySingleList mySingleList = new MySingleList();
mySingleList.createList();
mySingleList.display();
}
}
运行结果
2.得到链表长度
这个基本逻辑与遍历相同,这里不多做赘述,不同点是要定义一个计数器,每走一步计数器加一下每走一步计数器加一下,在修改返回值,去掉打印即可得到链表长度
代码如下
public int size(){
int count = 0;
ListNode cur = head;
while (cur != null) {
count++;
cur = cur.next;
}
return count;
}
测试调用
public class test {
public static void main(String[] args) {
MySingleList mySingleList = new MySingleList();
mySingleList.createList();
//mySingleList.display();
System.out.println(mySingleList.size());
}
}
运行截图
3.判断链表中是否包含关键字key
逻辑上同,只需要在循环中加一个判断,key是否等于val,返回true或false
代码如下
public boolean contains(int key){
ListNode cur = head;
while (cur != null) {
if(cur.val == key) {
return true;
}
cur = cur.next;
}
return false;
}
调用测试
public class test {
public static void main(String[] args) {
MySingleList mySingleList = new MySingleList();
mySingleList.createList();
//mySingleList.display();
//System.out.println(mySingleList.size());
System.out.println(mySingleList.contains(12));
}
}
运行截图
4.头插法
顾名思义,就是将一个节点插到链表的最前面,我们还是老规矩画图进行理解,我们先定义一个node节点如图
那么我们要怎么做才能将node插入到链表中呢,如图。我们先让node.next= head,之后再让node成为新的head,即head = node
代码如下
public void addFirst(int data){
ListNode node = new ListNode(data);
node.next = head;
head = node;
}
测试调用
public class test {
public static void main(String[] args) {
MySingleList mySingleList = new MySingleList();
mySingleList.createList();
mySingleList.display();
mySingleList.addFirst(10);
mySingleList.display();
}
}
运行截图
本篇文章我们主要介绍了遍历链表,得到链表长度,判断是否包换关键字key以及头插法,下一篇文章,我们将继续介绍链表有关的方法,敬请期待叭~