gpt4 book ai didi

c - 这是一个链表吗?

转载 作者:行者123 更新时间:2023-11-30 15:38:24 25 4
gpt4 key购买 nike

我刚刚编写了这段代码,很难检查列表是否按其应有的方式链接。是否可以查看我是否正确链接列表

.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);
}

现在应该保存列表吗?

最佳答案

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

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

关于c - 这是一个链表吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21764080/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com