我刚刚执行了此代码,并且很难检查列表是否链接。是否可以正确查看链接 列表?
.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);
}
现在应该保存列表吗?
答案 0 :(得分:1)
据我所知,如何分配和释放结构,你的“talstrul”项目正在堆栈上构建,然后在它的末尾被销毁。您需要使用malloc
分配它们(当然,最后使用free
释放它们),然后将结果指针分配给您的“下一个”值。
此外,您需要跟踪“头部”对象的位置。每个对象都指向前方而不是后退,这意味着最后,您有一个指向最后一个对象的指针,但无法找到第一个对象的位置。