C++ 修改链表中的记录C++;
好的,我想做的是,程序会要求我输入我想修改的导师的id,在这之后,让我们假设在这种情况下,我想修改导师的地址和电话号码。我不太清楚如何处理这个问题,因此任何帮助都将不胜感激!请引导我到正确的方向,谢谢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
#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
,然后更新地址
和电话号码
的值。