#include <iostream>
#include <string>
using namespace std;
class ArrivalList
{
private:
struct Arrival
{
string arrAddress;
double distance;
string roadCategory;
Arrival* next;
};
Arrival* head;
ArrivalList(const ArrivalList&) {}
ArrivalList& operator=(const ArrivalList&) { return *this; }
public:
ArrivalList();
~ArrivalList();
bool addArrival(string oneAddress, double distance, string roadCategory);
void print() const;
};
ArrivalList::ArrivalList() : head(NULL) {}
ArrivalList::~ArrivalList()
{
Arrival* current = head;
while (current)
{
Arrival* temp = current->next;
delete current;
current = temp;
}
}
bool ArrivalList::addArrival(string oneAddress, double distance, string roadCategory)
{
Arrival** current = &head;
while ((*current != NULL) && (oneAddress >= (*current)->arrAddress))
current = &((*current)->next);
Arrival* temp = new Arrival;
temp->arrAddress = oneAddress;
temp->distance = distance;
temp->roadCategory = roadCategory;
temp->next = *current;
*current = temp;
return true;
}
void ArrivalList::print() const
{
if (head)
{
Arrival* current = head;
while (current)
{
cout << current->arrAddress << ' ';
current = current->next;
}
cout << endl;
}
else
{
cout << "(empty)" << endl;
}
}
int main()
{
ArrivalList li;
li.print();
li.addArrival("jjjjj",0.8999,"I");
li.print();
li.addArrival("aaaaa",0.888,"k");
li.print();
li.addArrival("lllll",0.888,"k");
li.print();
li.addArrival("kkkkk",0.888,"k");
li.print();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIEFycml2YWxMaXN0CnsKICAgIHByaXZhdGU6CiAgICAgICAgc3RydWN0IEFycml2YWwKICAgICAgICB7CiAgICAgICAgICAgIHN0cmluZyBhcnJBZGRyZXNzOwogICAgICAgICAgICBkb3VibGUgZGlzdGFuY2U7CiAgICAgICAgICAgIHN0cmluZyByb2FkQ2F0ZWdvcnk7CiAgICAgICAgICAgIEFycml2YWwqIG5leHQ7CiAgICAgICAgfTsKCiAgICAgICAgQXJyaXZhbCogaGVhZDsKCiAgICAgICAgQXJyaXZhbExpc3QoY29uc3QgQXJyaXZhbExpc3QmKSB7fQogICAgICAgIEFycml2YWxMaXN0JiBvcGVyYXRvcj0oY29uc3QgQXJyaXZhbExpc3QmKSB7IHJldHVybiAqdGhpczsgfQoKICAgIHB1YmxpYzoKCiAgICAgICAgQXJyaXZhbExpc3QoKTsKICAgICAgICB+QXJyaXZhbExpc3QoKTsKCiAgICAgICAgYm9vbCBhZGRBcnJpdmFsKHN0cmluZyBvbmVBZGRyZXNzLCBkb3VibGUgZGlzdGFuY2UsIHN0cmluZyByb2FkQ2F0ZWdvcnkpOwoKCQl2b2lkIHByaW50KCkgY29uc3Q7Cn07CgpBcnJpdmFsTGlzdDo6QXJyaXZhbExpc3QoKSA6IGhlYWQoTlVMTCkge30KCkFycml2YWxMaXN0Ojp+QXJyaXZhbExpc3QoKQp7CiAgICBBcnJpdmFsKiBjdXJyZW50ID0gaGVhZDsKICAgIHdoaWxlIChjdXJyZW50KQogICAgewogICAgICAgIEFycml2YWwqIHRlbXAgPSBjdXJyZW50LT5uZXh0OwogICAgICAgIGRlbGV0ZSBjdXJyZW50OwogICAgICAgIGN1cnJlbnQgPSB0ZW1wOwogICAgfQp9Cgpib29sIEFycml2YWxMaXN0OjphZGRBcnJpdmFsKHN0cmluZyBvbmVBZGRyZXNzLCBkb3VibGUgZGlzdGFuY2UsIHN0cmluZyByb2FkQ2F0ZWdvcnkpCnsKCUFycml2YWwqKiBjdXJyZW50ID0gJmhlYWQ7CgoJd2hpbGUgKCgqY3VycmVudCAhPSBOVUxMKSAmJiAob25lQWRkcmVzcyA+PSAoKmN1cnJlbnQpLT5hcnJBZGRyZXNzKSkKCQljdXJyZW50ID0gJigoKmN1cnJlbnQpLT5uZXh0KTsKCglBcnJpdmFsKiB0ZW1wID0gbmV3IEFycml2YWw7Cgl0ZW1wLT5hcnJBZGRyZXNzID0gb25lQWRkcmVzczsKCXRlbXAtPmRpc3RhbmNlID0gZGlzdGFuY2U7Cgl0ZW1wLT5yb2FkQ2F0ZWdvcnkgPSByb2FkQ2F0ZWdvcnk7Cgl0ZW1wLT5uZXh0ID0gKmN1cnJlbnQ7CgogICAgKmN1cnJlbnQgPSB0ZW1wOwoKICAgIHJldHVybiB0cnVlOwp9Cgp2b2lkIEFycml2YWxMaXN0OjpwcmludCgpIGNvbnN0CnsKCWlmIChoZWFkKQoJewoJCUFycml2YWwqIGN1cnJlbnQgPSBoZWFkOwoJCXdoaWxlIChjdXJyZW50KQoJCXsKCQkJY291dCA8PCBjdXJyZW50LT5hcnJBZGRyZXNzIDw8ICcgJzsKCQkJY3VycmVudCA9IGN1cnJlbnQtPm5leHQ7CgkJfQoJCWNvdXQgPDwgZW5kbDsKCX0KCWVsc2UKCXsKCQljb3V0IDw8ICIoZW1wdHkpIiA8PCBlbmRsOwoJfQp9CgppbnQgbWFpbigpCnsKICAgIEFycml2YWxMaXN0IGxpOwoJbGkucHJpbnQoKTsKCiAgICBsaS5hZGRBcnJpdmFsKCJqampqaiIsMC44OTk5LCJJIik7CglsaS5wcmludCgpOwoKICAgIGxpLmFkZEFycml2YWwoImFhYWFhIiwwLjg4OCwiayIpOwoJbGkucHJpbnQoKTsKCglsaS5hZGRBcnJpdmFsKCJsbGxsbCIsMC44ODgsImsiKTsKCWxpLnByaW50KCk7CgoJbGkuYWRkQXJyaXZhbCgia2tra2siLDAuODg4LCJrIik7CglsaS5wcmludCgpOwp9Cg==