这是我的代码。我需要让用户输入更多字段,而不仅仅是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;
}
}
答案 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
所做的那样(注意那些是字符串)。