📌  相关文章
📜  链表类中的运算符重载'<<‘和’>>’运算符(1)

📅  最后修改于: 2023-12-03 15:12:32.491000             🧑  作者: Mango

链表类中的运算符重载

链表是一种常用的数据结构,用于存储一系列具有顺序关系的元素。在C++中,我们可以通过定义一个链表类来操作链表。为了方便使用,我们可以对链表类中的运算符进行重载。

本文将介绍链表类中的运算符重载,包括左移运算符<<和右移运算符>>。我们将逐步了解这两个运算符的重载实现以及其具体应用。

左移运算符<<

左移运算符<<可以用来输出链表中的所有元素。在链表类的定义中,我们可以使用友元函数对左移运算符<<进行重载。

代码示例:

friend ostream& operator<<(ostream& os, const LinkedList<T>& list){
    Node<T>* temp = list.head;
    while(temp){
        os << temp->data << " ";
        temp = temp->next;
    }
    return os;
}

上述代码中,我们定义了一个名为operator<<的友元函数,并指定该函数要重载的运算符为<<。在这个函数中,我们使用了一个指针temp来指向链表的头节点。然后,我们使用while循环遍历链表,对其中的每个元素进行输出,并将temp指向下一个节点,直到temp为NULL为止。最后,我们返回一个ostream类型的对象os,以便继续进行链式操作。

使用左移运算符<<可以很方便地输出链表中的所有元素。例如:

LinkedList<int> list;
list.push_back(1);
list.push_back(2);
list.push_back(3);
cout << list << endl; //输出1 2 3
右移运算符>>

右移运算符>>可以用来向链表中插入元素。在链表类的定义中,我们可以通过重载右移运算符>>,实现从输入流中读取数据,并将其插入到链表中。

代码示例:

friend istream& operator>>(istream& is, LinkedList<T>& list){
    T input;
    is >> input;
    list.push_back(input);
    return is;
}

上述代码中,我们定义了一个名为operator>>的友元函数,并指定该函数要重载的运算符为>>。在这个函数中,我们使用一个变量input来存储从输入流中读取的数据。然后,我们调用链表类中的push_back函数,将input插入到链表的尾部。最后,我们返回一个istream类型的对象is,以便继续进行链式操作。

使用右移运算符>>可以很方便地向链表中插入元素。例如:

LinkedList<int> list;
cin >> list; //从标准输入中读入数据并插入到链表中
cout << list << endl; //输出刚刚插入的数据

以上就是链表类中的运算符重载的介绍。通过重载左移运算符<<和右移运算符>>,我们可以很方便地实现链表中的输出和插入操作。