Какой смысл проходить через связанный список, чтобы получить значение, я мог бы получить его прямо правильно? - PullRequest
0 голосов
/ 05 апреля 2019

Почему нам даже нужно пройти через список, хотя я получаю значение последнего элемента, если я делаю printf("%d", end->value), как в строке 40, вместо того, чтобы проходить через каждый элемент?

#include <stdio.h>
#include <stdlib.h>

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

void print(struct node *top) {
    while (top != NULL) {
        printf("%d\n", top->value);
        top = top->next;
    }
}

int main(void) {
    struct node *head;
    struct node *second;
    struct node *end;

    head = NULL;
    second = NULL;
    end = NULL;

    head = (struct node*)malloc(sizeof(struct node));
    second = (struct node*)malloc(sizeof(struct node));
    end = (struct node*)malloc(sizeof(struct node));

    head->value = 5;
    head->next = second;

    second->value = 9;
    second->next = end;

    end->value = 10;
    end->next = NULL;

    printf("%d\n", end->value ); /*I m directly getting the output as 10, 
 whats the use of traversing through the list to get the same value? */

    print(head); /*this is the use of the function to traverse through the  
                    list*/
}

1 Ответ

1 голос
/ 05 апреля 2019

В вашем случае нет недостатка в прямом получении значения, но во многих других случаях вы будете использовать некоторую функцию для создания новых узлов, и чаще всего у вас будет только один указатель, который напрямую указывает на узел (обычно голова).Поэтому, хотя здесь нет ничего плохого в том, чтобы напрямую получить значение, в большинстве случаев нет возможности получить значение, и вам нужно будет пройти, если вы хотите получить значения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...