链接列表(C )中(字符串)数据的用户输入



我正在尝试制作一个代码,以询问用户他们想接受多少学生。此后,用户将输入学生的名字。

我制作的代码是:

void acceptingStudents()
{
    node *temp = NULL, *head = NULL, *run = NULL;
    int studentSize;
    char studentName;
    cout << "Number of students to be accepted: ";
    cin >> studentSize;
    for (int x = 1; x <= memberSize; x++)
   {
       cout << "Student's name: ";
       cin >> studentName;
       temp = new node();   
       temp->name = studentName;  
       temp->next = NULL;   
       temp -> prev = NULL; 
       if (head == NULL) 
       {
           head = temp;
       }
       else
       {
           run = head;
           while (run->next != NULL)
           {
               run = run->next;
           }
           temp -> prev = run; 
           run->next = temp;   
       }
   }
}
void main ()
{
    node *run = NULL;
    acceptingStudents();
    while (run != NULL)
   {
       printf("%dn", run->name);
       run= run->next;
   }
    _getch();
}

我希望输出为

Number of students to be accepted: 3
Student's name: Allison
Student's name: Gerry
Student's name: Sam

但我的代码仅输出:

Number of students to be accepted: 3
Student's name: Allison
Student's name: Student's name:

如何修复此问题并确保用户输入的每个学生名称成为每个节点的数据?我正在尝试制作这样的节点:

[allison] -> [Gerry] -> [Sam] -> Null

在另一个注意事项上,我能够使用以下数字使其与数字合作:

void addingNodes()
{
    node *temp = NULL, *head = NULL, *run = NULL;
    int studentSize;
    int studentNumber;
    cout << "Number of students to be accepted: ";
    cin >> studentSize;
    for (int x = 1; x <= studentSize; x++)
   {
       cout << "Student's class number: ";
       cin >> studentNumber;
       temp = new node();   
       temp-> value = studentNumber;  
       temp->next = NULL;   
       temp -> prev = NULL; 
       if (head == NULL) 
       {
           head = temp;
       }
       else
       {
           run = head;
           while (run->next != NULL)
           {
               run = run->next;
           }
           temp -> prev = run; 
           run->next = temp;   
       }
   }
}

它输出:

Number of students to be accepted: 5
Student's class number: 27
Student's class number: 12
Student's class number: 4
Student's class number: 8
Student's class number: 30

我唯一的问题是将其变成字符串而不是int,因为我需要名称而不是类号码。

您需要使用字符串或字符数组来存储名称。

char studentName[SIZE];
std::string studentName;

您也不能只分配一个字符数组。

如果您使用的是string数据类型,则可以使用assign函数。

std::string str;
str.assign("Hello World");
cout<<str;

除此之外,您用于实现链接列表的代码似乎有些混乱。如果要实现单个链接列表,为什么要有两个指针(下一个和上一条(?为什么不使成员函数在node类中添加节点,而不是在功能中明确进行?

我观察到的一个问题是studentname的数据类型是字符,使其字符串,并且可以正常工作。另一个问题是"运行!= null"。您没有更新值运行。通过参考,通过fuctioon" AcceptStudents(("以" AcceptStudents(("运行,或者使变量"运行"全局。在您给定的代码中,您提到它

相关内容

  • 没有找到相关文章

最新更新