用c++写程序:整数链表:要求编程实现整数链表类实现以下功能: 1链表的创建。2插入结点要能在所有可能的位置上插入结点。 3删除节点。4链表遍历输出。5实现结点的查询6注意:考虑用类模板实现通用的链表类。
下面是使用C++编写的整数链表类的示例代码:
#include <iostream>
template <typename T>
class Node {
public:
T data;
Node<T>* next;
Node(T data) : data(data), next(nullptr) {}
};
template <typename T>
class LinkedList {
private:
Node<T>* head;
int size;
public:
LinkedList() : head(nullptr), size(0) {}
void insertNode(T value, int pos) {
if (pos < 0 || pos > size) {
std::cout << "Invalid position!" << std::endl;
return;
}
Node<T>* newNode = new Node<T>(value);
if (pos == 0) {
newNode->next = head;
head = newNode;
} else {
Node<T>* current = head;
for (int i = 0; i < pos - 1; i++) {
current = current->next;
}
newNode->next = current->next;
current->next = newNode;
}
size++;
}
void deleteNode(int pos) {
if (pos < 0 || pos >= size) {
std::cout << "Invalid position!" << std::endl;
return;
}
Node<T>* nodeToDelete;
if (pos == 0) {
nodeToDelete = head;
head = head->next;
} else {
Node<T>* current = head;
for (int i = 0; i < pos - 1; i++) {
current = current->next;
}
nodeToDelete = current->next;
current->next = nodeToDelete->next;
}
delete nodeToDelete;
size--;
}
void traverse() {
Node<T>* current = head;
while (current != nullptr) {
std::cout << current->data << " ";
current = current->next;
}
std::cout << std::endl;
}
bool search(T value) {
Node<T>* current = head;
while (current != nullptr) {
if (current->data == value) {
return true;
}
current = current->next;
}
return false;
}
};
int main() {
LinkedList<int> list;
list.insertNode(5, 0);
list.insertNode(10, 1);
list.insertNode(15, 2);
list.insertNode(20, 1);
std::cout << "Linked List: ";
list.traverse();
std::cout << "Search 10: " << (list.search(10) ? "Found" : "Not found") << std::endl;
list.deleteNode(1);
std::cout << "Linked List after deletion: ";
list.traverse();
return 0;
}
这个程序实现了一个整数链表类(LinkedList),其中包括了创建链表、插入节点、删除节点、遍历输出链表以及查询节点的功能。使用类模板实现通用的链表类,可以存储任意类型的数据。
在示例代码中,我们首先创建了一个整数类型的链表(LinkedList
运行程序会输出以下结果:
Linked List: 5 20 10 15
Search 10: Found
Linked List after deletion: 5 10 15
注意:示例代码中没有包含链表的销毁函数,需要在程序结束时手动释放链表中的内存,否则会造成内存泄漏
原文地址: http://www.cveoy.top/t/topic/iGJk 著作权归作者所有。请勿转载和采集!