From 6091b4a418f41aeca2a0097bb7a3ed63d34720b3 Mon Sep 17 00:00:00 2001 From: sloven-c Date: Tue, 21 Oct 2025 12:01:52 +0200 Subject: [PATCH] Display n-th element in the list --- main.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/main.c b/main.c index fdb3eb7..c9c27e3 100644 --- a/main.c +++ b/main.c @@ -14,12 +14,28 @@ void rem(struct List **list, int value_to_remove); void print_list(const struct List *list); +int *get(const struct List *list, int n); + +int llen(const struct List *list); + int main(void) { struct List *seznam = init(1); add(seznam, 5); add(seznam, 2); print_list(seznam); + constexpr int n = 2; + int *get_n = get(seznam, n); + printf("Attempting to find %d. element => ", n); + if (get_n == NULL) { + // element doesn't exist + printf("failed!"); + } else { + printf("succeeded. Value = %d", *get_n); + free(get_n); + } + printf("\n\n"); + rem(&seznam, 1); print_list(seznam); @@ -102,3 +118,27 @@ void print_list(const struct List *list) { } printf("\n"); } + +// we will pretend the user is not a programmer and enters n=1 for first element and so on +int *get(const struct List *list, const int n) { + const int list_len = llen(list); + if (n > list_len || n <= 0) return nullptr; + + for (int i = 0; i < n - 1; i++) { + list = list->next; + } + + int *val = malloc(sizeof(int)); + *val = list->value; + return val; +} + +int llen(const struct List *list) { + int len = 0; + + for (; list != NULL; list = list->next) { + len++; + } + + return len; +}