How to iterate through Linked List

前端 未结 4 1463
挽巷
挽巷 2021-01-12 08:12

I have looked around and I can\'t really find an answer I can understand or it doesn\'t apply to me. I have this class:

class Node
{
    public int value;
           


        
相关标签:
4条回答
  • 2021-01-12 08:46

    I know this is an old post, but this is what is popping up on google, and I do have a good alternative to the current best answer (not including the desired value condition)

    LinkedListNode<ChunkObject> list = new LinkedListNode<ChunkObject>();
    for(LinkedListNode<Object> node=list.First; node != null; node=node.Next){
        //do stuff
    }
    

    This version obviously uses a for loop and moves the variable declaration and increment to one line allowing you to condense and beautify your code.

    0 讨论(0)
  • 2021-01-12 08:51

    For this kind of list, you usually keep a reference to the current node (which starts with the head), and after each iteration, you change the value of that reference to the next node. When currentNode becomes null, you have reached the end of the list, as the last element doesn't have a next element.

    Something like this:

    Node currentNode = head;
    while (currentNode != null) {
        // do stuff with currentNode.value
        currentNode = currentNode.Next;
    }
    

    By the way, the BCL already contains some useful classes for this sort of task:

    • List<T>, which internally uses arrays to store elements and provides random access to them
    • LinkedList<T>, which uses the same principle as your custom class.

    But maybe you need to do it the way you do for some reason :)

    0 讨论(0)
  • 2021-01-12 09:05

    Try this basic iteration:

    Node tmp = head;
    while (tmp != null)
    {
        //do your checking...
        tmp = tmp.next;
    }
    
    0 讨论(0)
  • 2021-01-12 09:12

    You iterate through your class as follows:

    var currentNode = head;
    while ((currentNode != null) && (currentNode.Value != desiredValue))
       currentNode = currentNode.next;
    

    When the while loop completes, currentNode will be null or contain a node with the desired value.

    0 讨论(0)
提交回复
热议问题