链表输入后,输不出结果

输入后,输不出结果怎么回事?

 

#include<stdio.h>
#include<stdlib.h>
typedef struct Node {
    xt;char name;
    int age;
    struct Node* ne
}Node,*LinkList;
LinkList date(int n)
{
    LinkList p, r=NULL, list=NULL;
    char num1;
    int num2;
    for (int i = 0; i <n; i++)
    {
        printf("请输入姓名:");
        scanf("%s", &num1);
        printf("请输入年龄:");
        scanf("%d",&num2); 
        p = (LinkList)malloc(sizeof(Node));
        p->name = num1;
        p->age = num2;
        p->next = NULL;
        if (list == NULL)
        {
            list = p;
        }
        else
            r->next = p;
        r = p;
    }
    return (list);
}
int main()
{
    int a;
    Node* q;
    printf("请输入学生个数:"); 
    scanf("%d", &a);
    q = date(a);
    printf("姓名     年龄\n");
    while(q!=NULL)
    {
        printf("%s",q->name);
        printf("%-4d",q->age);
         q=q->next;
         printf("\n");
    }
    
    return 0;

肯定输不出结果啊,char类型输入你用%s怎么行呢?

还有要记得,每次输入前都要清空输入缓冲区,否则会有问题!!!

下面是我帮你改好的代码:

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

typedef struct Node {
	char name;
	int age;
	struct Node* next;
}Node, *LinkList;

LinkList date(int n) {
	LinkList p = nullptr, r = NULL, list = NULL;
	char num1;
	int num2;

	for (int i = 0; i < n; i++) {
		char c;		// 每次输入前清空输入缓冲区
		while ((c = getchar()) != '\n');

		printf("请输入姓名:");
		//scanf("%s", &num1);		// 是%c,不是%s
		scanf_s("%c", &num1);

		printf("请输入年龄:");
		scanf_s("%d", &num2);

		p = (LinkList)malloc(sizeof(Node));
		p->name = num1;
		p->age = num2;
		p->next = NULL;

		if (list == NULL) {
			list = p;
		} else
			r->next = p;

		r = p;
	}

	return (list);
}

int main() {
	int a;
	Node* q;

	printf("请输入学生个数:");
	scanf_s("%d", &a);

	q = date(a);
	printf("姓名     年龄\n");

	while (q != NULL) {
		//printf("%s", q->name);	// 是%c,不是%s
		printf("%c", q->name);
		printf("%10d", q->age);		// 这里改成%10d效果最好。不是%-4d
		q = q->next;
		printf("\n");
	}

	return 0;

}