A doubly linked list of data structuresFor example: Existing two-way linked list twowaylinked stored 1,2,3,4 Four elements, then the collection object will have 4 nodes A, B, C, D, by the above structure can be known, Node A is stored in element 1 and Node B, node B is stored in element 2 and Node A and node C, Node C stores element 3 and Node B and node D, and Node D stores element 4 and node C. If you now want to insert an element 5 in the middle of elements 2 and 3;
The process is as follows:
1. Creating a node E,e storage element 5
2. Assign the previous node in E to Node B
3. Modify the next node in B to node E
4. Assign the next node in E to node C
5. Modify the previous node in c to node E
From the above process, there is no movement of the node position when inserting, so the efficiency is high; the removal process is reversed from the insertion process
Instance code:/** * Twowaylinked class * Demonstrates the implementation of the data structure of a doubly linked list * @author Genius Federation-Yukun */public class Twowaylinked {//For storing the first node of the linked list private node fi RST = null;//is used to store the last node of the linked list private node end = null;//used to store the collection length private int size = 0;//method to add elements public void Add (Object obj) {/ /Create Node object nodes node = new node ();//node stores the added element node.element = obj;//Determines whether the first node is nullif (primary = = NULL) {//First node is the first time the element is added. = node;//Sets the first and last nodes of a node to their own first.pre = Node;first.next = node;} Determines whether the last node is nullif (final = null) {/* * If the last node is also null * the address of the same node object is stored by first and first */last = node;} else{//if the last node is not null//a newly created node the previous node should be the last node of the previous node.pre = last;//Newly created node the next node stores itself Node.next = node;// At this point, the last node that was saved in the previous add element///so that its next node should be set to the currently newly created node Last.next = node;//and then set final to the current newly created node. Add elements, length plus 1size++;} /** * Gets the element */public Object get (int index) {//by the subscript) {//first determine if the incoming subscript exceeds the length if (Index < size) {/* * * Declare a variable of node type Tagnode, and set the * Indicates looking for the time from the first node to find */node Tagnode = first;for (int i = 0; i < index; i++) {//Gets the next node, equivalent to I+1tagnode = Tagnode.next;} Gets the element in the found nodeVegetarian return tagnode.element;} Returns Nullreturn NULL if the incoming subscript is greater than or equal to the length;} /** * Node Class (Private member Inner Class) * * @author Genius Federation-Yukun */private class Node {//variable of its own type, used to store the variables of node pre;//itself of the previous nodes, used to store the latter node of the nodes NEX A variable of type t;//object that is used to store elements of the object element;}} /** * Twowaylinkedtest class * For testing doubly linked list * @author Genius Federation-Yukun */public class Twowaylinkedtest {public static void main (string[] A RGS) {//Create a double-line linked list of objects twowaylinked TWL = new twowaylinked ();//Add values to the list twl.add (1); Twl.add (2); Twl.add (3); Twl.add (4);// Gets the value of the subscript 2 object element = Twl.get (2);//output value System.out.println (element);}} Run Result: 3
Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced.
I genius official free Tutorial 36: Bi-directional list structure of Java data structure