(1)给单链表类模板SimpleLInkList添加一个成员函数,实现利用原节点空间逆置单链表中元素的顺序。 利用编程模板中提供的主函数中测试算法正确性。
时间: 2023-06-07 07:11:58 浏览: 81
写一个算法将一单链表逆置。要求操作在原链表上进行。
好的,根据您的要求,我会帮您回答问题并保密您的要求。以下是代码实现:
template<class T>
class SimpleLinkList {
private:
struct Node {
T data;
Node *next;
};
Node *head;
public:
// 构造函数
SimpleLinkList() {
head = new Node;
head->next = nullptr;
}
// 添加节点
void addNode(T data) {
Node *temp = new Node;
temp->data = data;
temp->next = head->next;
head->next = temp;
}
// 利用原节点空间逆置单链表中元素的顺序
void reverseList() {
if (head->next == nullptr || head->next->next == nullptr) {
return;
}
Node *p = head->next;
Node *q = p->next;
head->next = nullptr;
while (q != nullptr) {
Node *r = q->next;
q->next = p;
p = q;
q = r;
}
head->next = p;
}
};
// 测试函数
int main() {
SimpleLinkList<int> list;
for (int i = 1; i <= 10; i++) {
list.addNode(i);
}
list.reverseList();
Node *p = list.getHead()->next;
while (p != nullptr) {
cout << p->data << " ";
p = p->next;
}
return 0;
}
希望您对代码满意,如果有其他问题,请随时提出。
阅读全文