Вывести первый элемент связанного списка на C lang - PullRequest
0 голосов
/ 11 февраля 2019

Во время обучения себя тому, как управлять связанными списками в Си, я столкнулся с некоторыми трудностями.Я создал функцию getNode для создания списка из 4 целых чисел.Теперь я хотел бы напечатать первый элемент списка, чтобы я мог узнать что-то новое.К сожалению, когда я пытаюсь вспомнить головной узел списка, программа печатает последний узел.Когда весь код был в main (), не было никаких проблем или чего-то еще, только когда я получил факторизацию кода, упомянутые трудности произошли.Это может быть просто отсутствие указателя или какая-то логическая ошибка.Любая помощь приветствуется!спасибо

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct list
{
    int x;
    struct list *next;
}list;
list *getNode()
{
    int marker = 0;
    int base;
    list *head, *current;
    head=current=NULL;
    while (marker < 4)
    {
        printf("wprowdz liczbe dla NodE o markerze: %d  \n", marker + 1);
        scanf("%d", &base);
        list *node = malloc(sizeof(list));
        node->x = base;
        node->next = NULL;
        if (head == NULL)
        {
            current = head = node;
        }
        else
        {
            current = current->next = node;
        }
        marker++;
    }
    return current;
}
void printNode(list *head)
{
    printf("this shoud print the first element of linked list :");
    printf("%d", head->x);
}
int main()
{
    list *start = getNode();
    printNode(start);


}

1 Ответ

0 голосов
/ 11 февраля 2019

Мой дорогой друг, в функции getNode нужно вернуть указатель головы, а не текущий указатель.Указатель заголовка указывает на первый узел, но текущий узел указывает на последний узел, потому что вы обновляете текущий узел каждый раз, когда выполняется цикл.Итак, нам нужно вернуть указатель головы, чтобы пройти через связанный список или напечатать первый элемент.Надеюсь, вы поняли это !!Ура, не стесняйтесь задавать вопросы

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