Я просто сделал этот код, и его так сложно проверить, есть ли список is связан как следует. Возможно ли узнать, есть ли у меня правильно?Связанный ли это список?
.h файл:
#include <stdio.h>
#include <stdlib.h>
struct talstrul
{
int num;
struct talstrul *next;
};
.c файл:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "clabb2head.h"
void main()
{ typedef struct talstrul talstrul;
int vek[5] = {1,2,3,4,5};
talstrul *pek1=NULL;
int langd = sizeof(vek)/sizeof(vek[0]);
int i;
for(i=0; i<langd; i++)
{
talstrul obj1;
obj1.num = vek[i];
obj1.next = pek1;
pek1 = &obj1;
}
printf("%d",*pek1);
}
Я знаю, по крайней мере, что pek1 указывает на значение 5, так что-то правильно по крайней мере :)
Что делать, если я изменить основную программу на:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "clabb2head.h"
void main()
{ typedef struct talstrul talstrul;
int vek[] = {1,2,3,4,5,9};
talstrul *pek1=NULL;
int langd = sizeof(vek)/sizeof(vek[0]);
int i;
for(i=0; i<langd; i++)
{
talstrul *obj1 = malloc(sizeof(talstrul));
obj1->num = vek[i];
obj1->next = pek1;
pek1 = obj1;
}
printf("%d",*pek1);
}
Следует ли сохранить список?
Да это:) Но я бы не рекомендовал вам создать связанный список, который был бы сложным – mangusta
'talstrul obj1;' является локальным объектом и будет использоваться на каждой итерации цикла. После цикла он будет недоступен, и pek1 все еще указывает на него. – wildplasser
Нет ... вы закончите с 'pek1', указав на' talstrul', который больше не действителен, поскольку 'obj1' был локальным для цикла for ... и результаты предыдущих итераций не сохраняются. – Dmitri