如何在列表中添加更多字段

时间:2016-06-17 23:00:12

标签: c list

这是我的代码。我需要让用户输入更多字段,而不仅仅是val。 它只是我用来测试列表的代码,因此,例如,我希望用户添加val,name和surname。我该怎么做? 有些术语不是英文的,但我认为整个代码很清楚。

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


    struct lista{
    int val;
    struct lista *next;
    }Lista;

    struct lista* crea(struct lista* head);
    void stampa(struct lista* testa);

    int main()
    {
    struct lista *head=NULL;
    int insert=0;

    while(1){
        printf("\n *** MENU ***\n 1.Add in list\n 2.Print\n 3.Exit\n\n Input: ");
        scanf("%d", &insert);
        switch(insert){
            case 1:
                head = crea(head);
                break;
            case 2:
                stampa(head);
                break;
            case 3:
                exit(1);
            default:
                printf("\n Errore: scelta non valida!\n");
                break;
            }
    }


    return 0;
}

struct lista* crea(struct lista* head){
    struct lista *nuovo=NULL; //sarà la nuova head
    int valore=0;
    nuovo = (struct lista*)malloc(sizeof(struct lista));
    printf("\nValue: ");
    scanf("%d", &valore);
    nuovo->val=valore;
    nuovo->next=head;
    head = nuovo;
    return nuovo;
};

void stampa(struct lista* head){
    struct lista* temp=NULL;
    temp = head;

    while(temp != NULL){
        printf("\nvalore: %d\n", temp->val);
        temp = temp->next;

    }
}

1 个答案:

答案 0 :(得分:1)

如果要输入更多字段,则必须在节点中输入它们。现在,在您的节点中只有元素val,它是int类型和指向下一个节点的指针。如果您希望用户输入名称或姓氏,则必须在节点内声明它们。您的结构应如下所示:

    struct lista{
    int val;
    char name[20];
    char surname[30];
    struct lista *next;
    }Lista; //if you are not typedefing than you dont need this name because you are just making the global node you will not use

比在你的函数中只需要询问用户姓名和姓氏,并将其添加到列表中,就像你对val所做的那样(注意那些是字符串)。