设计一个链表类,这个链表类能实现重载输出和重载输入
时间: 2023-07-11 07:17:18 浏览: 136
好的,这里是一个简单的链表类的设计,可以实现重载输出和重载输入:
```c++
#include <iostream>
using namespace std;
// 链表结点类
class ListNode {
public:
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {}
};
// 链表类
class LinkedList {
public:
ListNode* head;
LinkedList() {
head = NULL;
}
// 重载输出运算符
friend ostream& operator<< (ostream& os, LinkedList& list) {
ListNode* cur = list.head;
while (cur != NULL) {
os << cur->val << " ";
cur = cur->next;
}
return os;
}
// 重载输入运算符
friend istream& operator>> (istream& is, LinkedList& list) {
int val;
while (is >> val) {
ListNode* node = new ListNode(val);
if (list.head == NULL) {
list.head = node;
}
else {
ListNode* cur = list.head;
while (cur->next != NULL) {
cur = cur->next;
}
cur->next = node;
}
}
return is;
}
};
```
这个链表类包括一个链表结点类 `ListNode` 和一个链表类 `LinkedList`。在 `LinkedList` 类中,我们重载了输出运算符 `<<` 和输入运算符 `>>`,使得我们可以直接使用 `cout << list` 输出链表,使用 `cin >> list` 输入链表。
使用方法示例:
```c++
int main() {
LinkedList list;
cin >> list;
cout << list << endl;
return 0;
}
```
当我们输入 `1 2 3 4` 时,输出为 `1 2 3 4`。
阅读全文