给无序列表的每一项添加整数

Add integer to each item of unordered linked list

我想编写一个函数,将一个整数(作为参数传递给函数)添加到无序列表中的每个项目。这是完整的程序。

#include <iostream>
using namespace std;
//creates a node class
class Node {
    //defines data, and next as a pointer.
private:
    int data; //data in the beginning node
    Node *next; //pointer to the next node

public:
Node(int initdata) {
    data = initdata; //the initialized data is set as the head
    next = NULL; //the next node is set as NULL, as there is no next node yet.
}

int getData() { //function that return data of a given node.
    return data;
}

Node *getNext() { // pointer that gets the next node
    return next;
}

void setData(int newData) { // sets data in node
    data = newData;
}

void setNext(Node *newnext) {
    next = newnext;
}
};

// creates unorderedlist that points to the head of the linked list
class UnorderedList {
public:
Node *head;

UnorderedList() { // makes the head node equal to null
    head = NULL;
}

bool isEmpty() { // the head node is empty if it is null
    return head == NULL;
}

void add(int item) { //cerates a "temp" pointer that adds the new node to the head of the list
    Node *temp = new Node(item);
    temp->setNext(head);
    head = temp;
}

int size() { //cereates a "current" pointer that iterates through the list until it reaches null
    Node *current = head;
    int count = 0;
    while (current != NULL) {
        count++;
        current = current->getNext();
    }

    return count;
}

// creates "current" pointer that iterates through the list
// untli it finds the item being searched for, and returns a boolean value

bool search(int item) {
    Node *current = head;
    while (current != NULL) {
        if (current->getData() == item) {
            return true;
        } else {
            current = current->getNext();
        }
    }
    return false;
}

void addInteger(int item){
    Node *current = head;
    while (current != NULL) {
        current->getData() = current->getData() + item;
    }
}

// uses current and previous pointer to iterate through the lists
// finds the items that is searched for, and removes it

void remove(int item) {
    Node *current = head;
    Node *previous = NULL;
    bool found = false;
    while (!found) {
        if (current->getData() == item) {
            found = true;
        } else {
            previous = current;
            current = current->getNext();
        }
    }
    if (previous == NULL) {
        head = current->getNext();
    } else {
        previous->setNext(current->getNext());
    }
}

friend ostream& operator<<(ostream& os, const UnorderedList& ol);
};

ostream& operator<<(ostream& os, const UnorderedList& ol) {
Node *current = ol.head;
while (current != NULL) {
    os<<current->getData()<<endl;
    current = current->getNext();
}
return os;
}

int main() {
UnorderedList mylist;
mylist.add(1);
mylist.add(2);
mylist.add(3);
mylist.add(4);
mylist.add(5);
mylist.add(6);

cout<<"MY LIST: "<<endl<<mylist;

mylist.addInteger(5);
cout<<"=========================================================\n";
cout<<"After adding 5 to each element, the list now is\n";
cout<<"MY LIST: "<<endl<<mylist;
return 0;
}

现在程序在上面程序的以下函数中显示有关赋值操作的错误。

void addInteger(int item){
    Node *current = head;
    while (current != NULL) {
        current->getData() = current->getData() + item;
    }
}

如何给链表的每个元素加一个数字? 感谢任何帮助。

您可能需要如下内容:

current->setData(current->getData() + item);

请注意,现在您正在检索左侧的 return 值,然后尝试分配给它。这大概就是您的编译器告诉您的内容。