C 这是链表吗?

C 这是链表吗?,c,struct,linked-list,C,Struct,Linked List,我刚刚编写了这段代码,很难检查列表是否像它应该的那样链接了。是否可以查看我是否正确链接了列表 .h文件: #include <stdio.h> #include <stdlib.h> struct talstrul { int num; struct talstrul *next; }; #包括 #包括 塔斯图尔结构 { int-num; 结构talstrul*下一步; }; .c文件: #include <stdio.h> #inc

我刚刚编写了这段代码,很难检查列表是否像它应该的那样链接了。是否可以查看我是否正确链接了列表

.h文件:

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

struct talstrul
{
    int num;
    struct talstrul *next;


};
#包括
#包括
塔斯图尔结构
{
int-num;
结构talstrul*下一步;
};
.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);
}
#包括
#包括
#包括
#包括“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;
对于(i=0;inxt=pek1;
pek1=obj1;
}
printf(“%d”,*pek1);
}

现在应该保存列表吗?

正如我所理解的结构是如何分配和解除分配的,您的“talstrul”项正在堆栈上构建,然后在堆栈末尾销毁。您需要使用
malloc
分配它们(当然,最后使用
free
释放它),然后将结果指针分配给您的“下一个”值


此外,您还需要跟踪“头部”对象的位置。每个对象都指向前方,而不是后方,这意味着在最后,您有一个指向最后一个对象的指针,但无法找到第一个对象的位置。

是:)但是我不建议您制作一个复杂的链表,因为它是一个局部对象,并且将在循环的每次迭代中使用。在循环之后,它将超出范围,pek1仍然指向它。不……您最终会看到
pek1
指向一个不再作为
obj1有效的
talstrul
在for循环中是本地的…并且早期迭代的结果无论如何都不会保留。但是为什么当代码到达打印行时它会打印值5?DmitriMinor问题:使用
int-vek[]={1,2,3,4,5};
int-vek[5]={1,2,3,4,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);
}