Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

This is all hypothetical,

I have a struct as so:

struct node
{
    int     data;
    node*   next;
};

and a circular linked list with only a head pointer, how would I set up a base case for a recursive function that counts the nodes of the circular list? I don't even know where to begin because everything I brainstorm, I quickly realize wouldn't work, because the last node in the list points right back to head instead of NULL.

Example function:

int count(node *head)
{
   int listCount = 0;

   if(base case)
   {
     then return 0;
   }
   else
   {
     calculate listCount
     count(head->next);
   }

   return listCount
}
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
443 views
Welcome To Ask or Share your Answers For Others

1 Answer

you can make the ciruclar linked list into a linear linked list

int wrapper_function(node*head)
{
    node*current = head;
    head  = head -> next;
    current -> next = NULL;
    count(head);
    current -> next = head;
    head = current;
    return 0;
}


int count(node *head)
{
   int count = 0;

   if(!head)
   {
   then return 0;
   }
   else
  {
   calculate count
   count(head->next);
  }

   return;
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...