2017-11-11 50 views
0

問題:創建節點的鏈接列表。每個節點都應該有用於鏈接列表中下一個節點的學生姓名,年齡,課程編號,成績和指針。使用追加節點成員函數來生成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); 
} 

回答

0

您的if語句在搜索函數中必須是;

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

但是,您的問題不在於您對鏈接列表的理解。你不能正確地寫出名字,年齡和coursenum的值。您需要將所有讀取的值分配給結構的變量。

temp->name = name; 
temp->age = age; 
temp->coursenum = coursenum; 
temp->grade = grade; 
2
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'