如何在链表中插入和打印数字和字符串

How to insert and print numbers and string in linked list

我正在做一个关于链表的练习,我刚开始学习它。它要求我输入房间号和酒店的活动,但是当我尝试打印房间号和活动的输出时,它会在我从菜单中选择列出所有房间的选项后停止程序。我该如何修复这些代码?

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

#define TRUE 1
#define FALSE 0

void insertRoom(int number, char name);
void listRoom(int number, char name);

struct Number {
    int number;
    char name;
    struct Number *ptrnext;
};

struct Number *headptr, *newptr, *currentptr;

int main()
{
    char ch, name;
    int choice=TRUE, number;

    headptr=NULL;
    while(choice==TRUE) { //menu
        printf("\n\ne - Enter room number and event");
        printf("\nl - List all rooms");
        printf("\nx - Exit\n");
        printf("\nEnter choice: ");
        scanf(" %c",&ch);
        switch(ch) { 
            case 'e':insertRoom(number,name);break;
            case 'l':listRoom(number,name);break;
            case 'x': choice=FALSE; break;

            default: printf("\nEnter only one from the above");
        }
    }
 return 0;
}

void insertRoom(int number,char name) {
    newptr=(struct Number *)malloc(sizeof(struct Number));

    printf("\nEnter a number: ");
    scanf("%d",&newptr->number);
    printf("\nEnter name: ");
    scanf(" %[^\n]s",&newptr->name);

    if (headptr==NULL) {
        headptr=newptr;
        newptr->ptrnext=NULL;
    }
    else {
        newptr->ptrnext=headptr;
        headptr=newptr;
    }
}

void listRoom(int number,char name) {
    if (headptr==NULL) {
        printf("\nEmpty list");
        return;
    }
    currentptr=headptr;

    do {
        printf("\n\nRoom number \tEvent");
        printf("\n%d \t%s",currentptr->number,currentptr->name);
        printf("\n");

        currentptr=currentptr->ptrnext;
    } while(currentptr !=NULL);
}

这是问题的输出: output

声明变量名时给事件名的大小即可解决问题

char name[30];