C++ 修改链表中的记录C++;

C++ 修改链表中的记录C++;,c++,linked-list,C++,Linked List,好的,我想做的是,程序会要求我输入我想修改的导师的id,在这之后,让我们假设在这种情况下,我想修改导师的地址和电话号码。我不太清楚如何处理这个问题,因此任何帮助都将不胜感激!请引导我到正确的方向,谢谢 #include <iostream> #include <string> #include <stdlib.h> using namespace std; //Has functions accepts input & prints outpu

好的,我想做的是,程序会要求我输入我想修改的导师的id,在这之后,让我们假设在这种情况下,我想修改导师的地址和电话号码。我不太清楚如何处理这个问题,因此任何帮助都将不胜感激!请引导我到正确的方向,谢谢

#include <iostream>
#include <string>
#include <stdlib.h>

using namespace std;



//Has functions accepts input & prints output in date format
class date {

public:
    int day, month, year;
    char seperator = '/';
    void enter() {
        cin >> day >> seperator >> month >> seperator >> year;
    }
    void display() {
        cout << day << seperator << month << seperator << year;
    }
    void reset() {
        day = 0;
        month = 0;
        year = 0;
    }
};

//Declaring tutor structure of Variables Globally (up to 100 records)
struct tutor {
    tutor* back;
    int tutorID;
    string tutorName;
    date dateJoined;
    date dateTerminate;
    float hourlyRate;
    string phoneNum;
    string address;
    int tCentreCode;
    string tCentreName;
    string tCentreLocation;
    int subjectCode;
    string subjectName;
    int rating;
    tutor* next;
}*list, *newnode, *temp, *previous, *tail;

void generateSample() {

    list = NULL;

    newnode = new tutor;
    newnode->tutorID = 1;
    newnode->tutorName = "Yow Tew Thung";
    newnode->address = "2, Jln 1/3, Bandar Sri Selamat";
    newnode->phoneNum = "0121231542";
    newnode->dateJoined.day = 15;  newnode->dateJoined.month = 01; newnode->dateJoined.year = 2017;
    newnode->dateTerminate.day = 10; newnode->dateTerminate.month = 11; newnode->dateTerminate.year = 2019;
    newnode->tCentreCode = 4;
    newnode->tCentreName = "eXcel Bukit Bintang 1";
    newnode->tCentreLocation = "Bukit Bintang";
    newnode->subjectCode = 4;
    newnode->subjectName = "History";
    newnode->rating = 5;
    newnode->hourlyRate = 45;

    list = tail = newnode;


    newnode = new tutor;
    newnode->tutorID = 2;
    newnode->tutorName = "Syed Hasif";
    newnode->address = "17, Jln Zainal Abidin 4, Suria";
    newnode->phoneNum = "0189056841";
    newnode->dateJoined.day = 05;  newnode->dateJoined.month = 05; newnode->dateJoined.year = 2019;
    newnode->dateTerminate.day = 02; newnode->dateTerminate.month = 11; newnode->dateTerminate.year = 2020;
    newnode->tCentreCode = 1;
    newnode->tCentreName = "eXcel Bukit Jalil 1";
    newnode->tCentreLocation = "Bukit Jalil";
    newnode->subjectCode = 2;
    newnode->subjectName = "Bahasa Melayu";
    newnode->rating = 3;
    newnode->hourlyRate = 45;

    newnode->back = tail;
    tail->next = newnode;
    tail = newnode;

    newnode = new tutor;
    newnode->tutorID = 3;
    newnode->tutorName = "Chong Kun Li";
    newnode->address = "34, Jalan 1/3Y, PJU8, Kiara";
    newnode->phoneNum = "0189343221";
    newnode->dateJoined.day = 05;  newnode->dateJoined.month = 05; newnode->dateJoined.year = 2019;
    newnode->dateTerminate.day = 02; newnode->dateTerminate.month = 11; newnode->dateTerminate.year = 2020;
    newnode->tCentreCode = 2;
    newnode->tCentreName = "eXcel Subang Jaya 1";
    newnode->tCentreLocation = "Subang Jaya";
    newnode->subjectCode = 3;
    newnode->subjectName = "Mathematics";
    newnode->rating = 3;
    newnode->hourlyRate = 49;

    newnode->back = tail;
    tail->next = newnode;
    tail = newnode;

    newnode = new tutor;
    newnode->tutorID = 4;
    newnode->tutorName = "Sangeta Mahad";
    newnode->address = "9, Jln 17J, Medan Keramat";
    newnode->phoneNum = "0163457985";
    newnode->dateJoined.day = 05;  newnode->dateJoined.month = 05; newnode->dateJoined.year = 2019;
    newnode->dateTerminate.day = 02; newnode->dateTerminate.month = 11; newnode->dateTerminate.year = 2020;
    newnode->tCentreCode = 3;
    newnode->tCentreName = "eXcel Subang Jaya 2";
    newnode->tCentreLocation = "Subang Jaya";
    newnode->subjectCode = 3;
    newnode->subjectName = "Mathematics";
    newnode->rating = 1;
    newnode->hourlyRate = 40;

    newnode->back = tail;
    tail->next = newnode;
    tail = newnode;

    system("PAUSE");
    system("cls");
}
#包括
#包括
#包括
使用名称空间std;
//Has函数接受输入并以日期格式打印输出
上课日期{
公众:
整数日、月、年;
字符分隔符='/';
void enter(){
cin>>日>>月>>月>>年;
}
无效显示(){
cout dateJoined.day=15;newnode->dateJoined.month=01;newnode->dateJoined.year=2017;
newnode->dateTerminate.day=10;newnode->dateTerminate.month=11;newnode->dateTerminate.year=2019;
newnode->tCentreCode=4;
newnode->tcentername=“eXcel Bukit Bintang 1”;
newnode->tCentreLocation=“Bukit Bintang”;
新建节点->主题代码=4;
新建节点->主题名称=“历史”;
新建节点->评级=5;
newnode->hourlyRate=45;
list=tail=newnode;
newnode=新导师;
newnode->tutorID=2;
newnode->tutorName=“Syed Hasif”;
newnode->address=“17,Jln Zainal Abidin 4,苏里亚”;
newnode->phoneNum=“0189056841”;
newnode->dateJoined.day=05;newnode->dateJoined.month=05;newnode->dateJoined.year=2019;
newnode->dateTerminate.day=02;newnode->dateTerminate.month=11;newnode->dateTerminate.year=2020;
newnode->tCentreCode=1;
newnode->tcentername=“eXcel Bukit Jalil 1”;
newnode->tCentreLocation=“Bukit Jalil”;
新建节点->主题代码=2;
newnode->subjectName=“Bahasa Melayu”;
新建节点->评级=3;
newnode->hourlyRate=45;
newnode->back=tail;
tail->next=newnode;
tail=newnode;
newnode=新导师;
newnode->tutorID=3;
newnode->tutorName=“Chong Kun Li”;
newnode->address=“34,吉亚拉岛PJU8号雅兰1/3Y”;
newnode->phoneNum=“0189343221”;
newnode->dateJoined.day=05;newnode->dateJoined.month=05;newnode->dateJoined.year=2019;
newnode->dateTerminate.day=02;newnode->dateTerminate.month=11;newnode->dateTerminate.year=2020;
newnode->tCentreCode=2;
newnode->tcentername=“eXcel Subang Jaya 1”;
newnode->tCentreLocation=“Subang Jaya”;
新建节点->主题代码=3;
newnode->subjectName=“数学”;
新建节点->评级=3;
newnode->hourlyRate=49;
newnode->back=tail;
tail->next=newnode;
tail=newnode;
newnode=新导师;
newnode->tutorID=4;
newnode->tutorName=“Sangeta Mahad”;
新建节点->地址=“9,Jln 17J,棉兰克拉玛特”;
newnode->phoneNum=“0163457985”;
newnode->dateJoined.day=05;newnode->dateJoined.month=05;newnode->dateJoined.year=2019;
newnode->dateTerminate.day=02;newnode->dateTerminate.month=11;newnode->dateTerminate.year=2020;
newnode->tCentreCode=3;
newnode->tcentername=“eXcel Subang Jaya 2”;
newnode->tCentreLocation=“Subang Jaya”;
新建节点->主题代码=3;
newnode->subjectName=“数学”;
新建节点->评级=1;
newnode->hourlyRate=40;
newnode->back=tail;
tail->next=newnode;
tail=newnode;
系统(“暂停”);
系统(“cls”);
}

我建议写一个
导师*findTutorByName(const std::string&)
函数,该函数将导师的姓名作为参数,然后在链表上迭代查找其
tutorName
字段与该姓名匹配的节点,如果找到这样的节点,则返回指向该节点的指针。如果找不到这样的节点,则应返回NULL

一旦你没有这样做,剩下的问题就是调用
tutor*t=findTutorByName(我想要的名称)
,如果
t
不是空指针,则在
t
中设置字段(例如
t->phoneNum=“12345678”


(旁注:发布的代码有四个相同的14行代码序列的重复。当您注意到类似的代码多次重复时,请将其视为有机会编写一个函数将该代码统一到一个位置的信号,然后用对t的调用替换N个重复代码的多个实例。)hat函数。从长远来看,它将为您节省大量的痛苦,因为您只需修复错误并在一个位置(而不是N个位置)进行更改。

将tutur指针指向tutor列表上的开始位置,并检查节点的id。如果节点的id正确,则修改指针,如果不移动到下一项


或者从id创建映射到以id作为映射键的导师指针。

将链表与应用程序逻辑分开。这样,您就可以单独实现和测试链表。您会发现这要容易得多。考虑一下如何手动完成此操作。如果有帮助,请绘制图片。您有
id
,因此只需从从列表开始,在节点上迭代,直到找到
id
,然后更新
地址
电话号码
的值。