不太确定如何从这里继续前进。使用链表进行搜索?

问题描述:

问题:创建节点的链接列表。每个节点都应该有用于链接列表中下一个节点的学生姓名,年龄,课程编号,成绩和指针。使用追加节点成员函数来生成5个学生的链接列表。创建搜索成员函数以显示获得'A'成绩的学生的姓名。假设只有一名学生获得“A”等级。不太确定如何从这里继续前进。使用链表进行搜索?

不太知道如何从这里移动。我是新来的链接列表/节点,并不太确定我做错了什么。任何帮助将不胜感激。

#include <iostream> 
#include <cstring> 
using namespace std; 

struct node 
{ 
    string name; 
    int age; 
    int coursenum; 
    char grade; 
    node *next; 
}; 

node *search (node * head) 
{ 
    node *temp = head; 
    char grade; 
    while (temp != NULL) 
    { 
     //if (temp->grade == 'A') 
     //if((temp->grade, grade)=='A') 
     if(strcmp(temp->grade, grade)=='A') 
    { 
     cout << temp->name; 
     return temp; 
    } 
     temp = temp->next; 
    } 
} 

int main() 
{ 
    node *head = NULL; 

    string name; 
    int age; 
    int coursenum; 
    char grade; 

    int i = 0; 

    while (i < 2) 
    { 
     cout << "Enter the students name: "; 
     cin >> name; 
     cout << "Enter the studens age: "; 
     cin >> age; 
     cout << "Enter the students course number: "; 
     cin >> coursenum; 
     cout << "Enter the students grade: "; 
     cin >> grade; 
     node *temp = new node; 
     temp->grade = grade; 
     temp->next = head; 
     head = temp; 
     i++; 
    } 
    search (head); 
} 

您的if语句在搜索函数中必须是;

if (temp->grade == 'A') 

但是,您的问题不在于您对链接列表的理解。你不能正确地写出名字,年龄和coursenum的值。您需要将所有读取的值分配给结构的变量。

temp->name = name; 
temp->age = age; 
temp->coursenum = coursenum; 
temp->grade = grade; 

strcmp(string1,string2) // returns 0 if strings are equal. 
    String str1 = 'apple'; 
    String str2 = 'apple'; 
    if(strcmp(str1,str2)) 
    { 
    cout<<"inside if"; 
    } 
    else{ 
    cout<<"inside else" 
    } 

//输出将是 “其他内” 因为如果条件将评估为 '0'