C语言中的数列列表

zdwk9cvp  于 2023-05-22  发布在  其他
关注(0)|答案(1)|浏览(135)

我正在做一个程序,让我输入一个模糊的系列,他们中的任何一个都有一个名字。这就是我如何编码它们:

struct lista // lista means list
{
    char nome[30]; // nome means name
    struct serie *serie;
    struct lista *prossima; // prossima means next
};

struct serie
{
    int n;
    struct serie *prossim;
};

我分配了这个结构体,使listamain()中工作:

struct lista *inizio = NULL; // inizio means start
struct lista *list = NULL;
struct lista *precedente = NULL; // precedente means previous

如何创建结构体来访问列表的struct serie *serie?我想到这样做:

struct list.serie start = NULL;
struct list.serie seri = NULL;
struct list.serie previous = NULL;

但它不起作用
我应该怎么打?
如何释放内存?
我做的结构列表

list = inizio;
while (list != NULL)
{
    struct lista *pros = list->prossima;
    free(list);
    list = pros;
}
list = NULL;

我如何免费的系列列表?
我尝试了在前面的示例中如何通过键入以下内容创建serie结构:

struct list.serie start;

等等...但它不能编译,因为它说Expected an identifier对于释放,我可以应用与原始列表lista相同的方法
我尝试在不访问struct serie *serie的情况下这样做,所以只输入名称,所以我如何利用列表似乎是可以的,因为我可以编写一个简单的列表,但列表的列表是问题。
对于想要查看完整代码的人:

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

struct lista
{
    char nome[30];
    struct serie *serie;
    struct lista *prossima;
};

struct serie
{
    int n;
    struct serie *prossim;
};

int main()
{
    int dim;

    struct lista *inizio = NULL;
    struct lista *list = NULL;
    struct lista *precedente = NULL;

    printf("How many series do you want to add? ");
    scanf("%d", &dim);

    for (int i = 0; i < dim; i++)
    {
        list = malloc(sizeof(struct lista));

        printf("Enter the name of the series: ");
        scanf("%s", list->nome);

        list->prossima = NULL;

        struct list.serie start; // THIS IS WHERE I GET THE ERROR
                                 // HOW DO I USE list.serie to create lists?

        if (i == 0)
        {
            inizio = list;
        }
        else
        {
            precedente->prossima = list;
        }
        precedente = list;
    }
    
    list = inizio;
    while (list != NULL)
    {
        printf("The name of the series is: %s\n", list->nome);
        list = list->prossima;
    }
    
    list = inizio;
    while (list != NULL)
    {
        struct lista *pros = list->prossima;
        free(list);
        list = pros;
    }
    list = NULL;
    
    return 0;
}
wtzytmuj

wtzytmuj1#

请显示错误信息,以便我们更好地了解问题。
需要注意的重要事项

  1. NULL需要<stdlib.h>标头
    1.指针是用“->”而不是“.”访问的
  2. serie* serie不是结构声明,而是一个变量。所以不能用它来代替数据类型
    您可以使用list->serie访问一系列列表
struct serie* temp = list->serie;

相关问题