📅  最后修改于: 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; //输出刚刚插入的数据
以上就是链表类中的运算符重载的介绍。通过重载左移运算符<<和右移运算符>>,我们可以很方便地实现链表中的输出和插入操作。