0x13. C More singly linked lists Task 14 - humtej1204/holbertonschool-low_level_programming GitHub Wiki
#advanced
Write a function that finds the loop in a linked list.
- Prototype:
listint_t *find_listint_loop(listint_t *head);
- Returns: The address of the node where the loop starts, or
NULL
if there is no loop - You are not allowed to use
malloc
,free
or arrays - You can only declare a maximum of two variables in your function
julien@ubuntu:~/0x13. More singly linked lists$ cat 103-main.c
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include "lists.h"
/**
* main - check the code
*
* Return: Always 0.
*/
int main(void)
{
listint_t *head;
listint_t *head2;
listint_t *node;
head2 = NULL;
add_nodeint(&head2, 0);
add_nodeint(&head2, 1);
add_nodeint(&head2, 2);
add_nodeint(&head2, 3);
add_nodeint(&head2, 4);
add_nodeint(&head2, 98);
add_nodeint(&head2, 402);
add_nodeint(&head2, 1024);
print_listint_safe(head2);
node = find_listint_loop(head2);
if (node != NULL)
{
printf("Loop starts at [%p] %d\n", (void *)node, node->n);
}
free_listint_safe(&head2);
head = NULL;
node = add_nodeint(&head, 0);
add_nodeint(&head, 1);
add_nodeint(&head, 2);
add_nodeint(&head, 3);
add_nodeint(&head, 4);
add_nodeint(&head, 5);
add_nodeint(&head, 6);
node->next = add_nodeint(&head, 7);
add_nodeint(&head, 98);
add_nodeint(&head, 402);
add_nodeint(&head, 1024);
print_listint_safe(head);
node = find_listint_loop(head);
if (node != NULL)
{
printf("Loop starts at [%p] %d\n", (void *)node, node->n);
}
free_listint_safe(&head);
return (0);
}
julien@ubuntu:~/0x13. More singly linked lists$ gcc -Wall -pedantic -Werror -Wextra -std=gnu89 103-main.c 2-add_nodeint.c 101-print_listint_safe.c 102-free_listint_safe.c 103-find_loop.c -o o
julien@ubuntu:~/0x13. More singly linked lists$ ./o
[0x13700f0] 1024
[0x13700d0] 402
[0x13700b0] 98
[0x1370090] 4
[0x1370070] 3
[0x1370050] 2
[0x1370030] 1
[0x1370010] 0
[0x1370560] 1024
[0x1370540] 402
[0x1370010] 98
[0x1370030] 7
[0x1370050] 6
[0x1370070] 5
[0x1370090] 4
[0x13700b0] 3
[0x13700d0] 2
[0x13700f0] 1
[0x1370110] 0
-> [0x1370030] 7
Loop starts at [0x1370030] 7
julien@ubuntu:~/0x13. More singly linked lists$
- GitHub repository: holbertonschool-low_level_programming
- Directory: 0x13-more_singly_linked_lists
- File: 103-find_loop.c