Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- class Link {
- private:
- Link* next_;
- double value_;
- public:
- Link(Link *next, double value) : next_(next), value_(value) {}
- double getValue() { return value_; }
- Link *getNext() {return next_;}
- void setValue(double value) { value_ = value; }
- void setNext(Link* next) { next_ = next; }
- };
- class List {
- Link* first_;
- Link* current_;
- public:
- List() : first_(nullptr), current_(nullptr) {}
- void show() {
- Link* tmp = first_;
- while (tmp) {
- cout << tmp->getValue() << " ";
- tmp = tmp->getNext();
- }
- }
- bool isEmpty() { return (first_ == nullptr) ? true : false; }
- void init() { current_ = first_;}
- void next() { current_ = current_ ? current_->getNext() : nullptr; }
- void add(double value) {
- first_ = new Link(first_, value);
- init();
- while (current_) {
- if (current_->getNext()) {
- if (current_->getNext()->getValue() < current_->getValue()) {
- double tmp = current_->getValue();
- current_->setValue(current_->getNext()->getValue());
- current_->getNext()->setValue(tmp);
- }
- }
- current_ = current_->getNext();
- }
- }
- void removeFirst() {
- Link* tmp = first_;
- first_ = first_->getNext();
- delete tmp;
- }
- void pop2(double toRemove) {
- Link* tmp = nullptr;
- while (first_ && first_->getValue() == toRemove)
- removeFirst();
- init();
- while (current_->getNext()) {
- if (current_->getNext()->getValue() == toRemove) {
- tmp = current_->getNext();
- current_->setNext(current_->getNext()->getNext());
- delete tmp;
- }
- else {
- current_ = current_->getNext();
- }
- }
- }
- };
- int main()
- {
- List lista;
- lista.add(98);
- lista.add(33);
- lista.add(97);
- lista.add(111);
- lista.add(92);
- lista.add(92);
- lista.add(92);
- lista.add(178);
- lista.pop2(92);
- lista.show();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement