更新時(shí)間:2022-10-24 10:03:01 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2548次
在這篇文章中,我們將看到如何在 java 中實(shí)現(xiàn)單鏈表。
它是最常用的數(shù)據(jù)結(jié)構(gòu)之一。在單鏈表中,Node 有數(shù)據(jù)和指向下一個(gè)節(jié)點(diǎn)的指針。它沒(méi)有指向前一個(gè)節(jié)點(diǎn)的指針。最后一個(gè)節(jié)點(diǎn)的 next 指向 null,因此您可以使用此條件迭代鏈表。
鏈表的節(jié)點(diǎn)可以呈現(xiàn)如下:
class Node {
public int data;
public Node next;
public void displayNodeData() {
System.out.println("{ " + data + " } ");
}
}
鏈表示例:
讓我們?cè)趈ava中實(shí)現(xiàn)鏈表。
創(chuàng)建一個(gè)名為SingleLinkedList.java的 java 文件。
package org.arpit.java2blog;
class Node {
public int data;
public Node next;
public void displayNodeData() {
System.out.println("{ " + data + " } ");
}
}
public class SinglyLinkedList {
private Node head;
public boolean isEmpty() {
return (head == null);
}
// used to insert a node at the start of linked list
public void insertFirst(int data) {
Node newNode = new Node();
newNode.data = data;
newNode.next = head;
head = newNode;
}
// used to delete node from start of linked list
public Node deleteFirst() {
Node temp = head;
head = head.next;
return temp;
}
// Use to delete node after particular node
public void deleteAfter(Node after) {
Node temp = head;
while (temp.next != null && temp.data != after.data) {
temp = temp.next;
}
if (temp.next != null)
temp.next = temp.next.next;
}
// used to insert a node at the start of linked list
public void insertLast(int data) {
Node current = head;
while (current.next != null) {
current = current.next; // we'll loop until current.next is null
}
Node newNode = new Node();
newNode.data = data;
current.next = newNode;
}
// For printing Linked List
public void printLinkedList() {
System.out.println("Printing LinkedList (head --> last) ");
Node current = head;
while (current != null) {
current.displayNodeData();
current = current.next;
}
System.out.println();
}
}
讓我們創(chuàng)建名為 LinkedListMain.java 的 Main 類來(lái)創(chuàng)建 LinkedList。
package org.arpit.java2blog;
public class LinkedListMain {
public static void main(String args[])
{
SinglyLinkedList myLinkedlist = new SinglyLinkedList();
myLinkedlist.insertFirst(5);
myLinkedlist.insertFirst(6);
myLinkedlist.insertFirst(7);
myLinkedlist.insertFirst(1);
myLinkedlist.insertLast(2);
// Linked list will be
// 2 -> 1 -> 7 -> 6 -> 5
Node node=new Node();
node.data=1;
myLinkedlist.deleteAfter(node);
// After deleting node after 1,Linked list will be
// 2 -> 1 -> 6 -> 5
myLinkedlist.printLinkedList();
}
}
當(dāng)你運(yùn)行上面的程序時(shí),你會(huì)得到下面的輸出:
Printing LinkedList (head --> last)
{ 1 }
{ 6 }
{ 5 }
{ 2 }
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743