这是一个链表吗?

时间:2014-02-13 19:47:18

标签: c struct linked-list

我刚刚执行了此代码,并且很难检查列表是否链接。是否可以正确查看链接 列表

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

现在应该保存列表吗?

1 个答案:

答案 0 :(得分:1)

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

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