Member 12656797 Ответов: 2

Функция отображения не работает в моей программе linked-list ?


я пытаюсь добавить узел в начале связанного списка мой код все время просто печатает последнее значение, которое я ввел в чем проблема может ли кто-нибудь очистить его.

Что я уже пробовал:

#include <stdio.h>

struct node
{
    int data;
    struct node *next;

};

typedef struct node node ;
node *head;

void create(int num);
void display();

main()
{
    int num,i,n;

    printf("enter the nno of node to create : ");
    scanf("%d",&n);

    for(i=0;i<n;++i)
    {
        printf("enter data for node %d= ",i+1);
        scanf("%d",&num);
        create(num);
        display();
    }
}

void create(int num)
{
    head=NULL;
    node *temp;
    temp=(node*)malloc(sizeof(node));
    temp->data=num;
    temp->next=head;
    head=temp;
    return;
}
void display()
{
    node *temp1;
    temp1=head;

    while(temp1!=NULL)
    {
        printf("data : %d-> ",temp1->data);
        temp1=temp1->next;
    }
    return;
}

jeron1

head=NULL;
узел * temp;
temp=(node*)malloc(sizeof(node));
temp - > data=num;
темп-&ГТ;следующий=руководитель; &ЛТ;== темп-&ГТ;следующий = руководитель , который всегда имеет значение null

2 Ответов

Рейтинг:
1

Patrice T

Вы должны научиться использовать отладчик как можно скорее. Вместо того чтобы гадать, что делает ваш код, пришло время увидеть, как он выполняется, и убедиться, что он делает то, что вы ожидаете.

Отладчик позволяет вам следить за выполнением строка за строкой, проверять переменные, и вы увидите, что есть точка, в которой он перестает делать то, что вы ожидаете.
Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jdb.html[^]
https://www.jetbrains.com/idea/help/debugging-your-first-java-application.html[^]

Вы получили ответ в решении 1.
Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
Когда код не делает того, что ожидается, вы близки к ошибке.

[Обновление]
В дополнение к решению 1 поставьте эту строку

node head = NULL;
в начале main.


Рейтинг:
0

Jochen Arndt

Вы устанавливаете голову на NULL внутри create() и назначьте это (сейчас NULL) к next:

void create(int num)
{
    // This sets head to NULL. Remove it.
    head=NULL;
    node *temp;
    temp=(node*)malloc(sizeof(node));
    temp->data=num;
    // This will be NULL because head has been set to NULL above
    temp->next=head;
    head=temp;
    return;
}

Поэтому удалите указанную строку и инициализируйте head при объявлении его:
node head = NULL;