C++数据结构 线性结构 单链表(10,20,30,40,50,60,70,80,90,100)编写顺序表存储,实现以下操作:。 (1)查找第20个数据元素。 (2)查找数据元素100 (3 )删除一个数据元素50 (4)打印表的长度,以及表中所有元素。
时间: 2024-10-16 11:16:36 浏览: 18
在C++中,我们可以创建一个单链表来存储整数序列(如10, 20, 30, ..., 100)。这里是一个简单的顺序表(也称为动态数组)的实现,包括插入、查找、删除和打印长度及元素的功能:
```cpp
#include <iostream>
// 定义节点结构体
struct ListNode {
int data;
ListNode* next;
ListNode(int value) : data(value), next(nullptr) {}
};
class SequentialList {
private:
ListNode* head; // 链表头指针
int size; // 表长度
public:
SequentialList() : head(nullptr), size(0) {}
// 插入数据到表尾
void insert(int value) {
if (!head) {
head = new ListNode(value);
size++;
} else {
ListNode* newNode = new ListNode(value);
newNode->next = head;
head = newNode;
size++;
}
}
// 查找数据元素
bool find(int target) const {
ListNode* current = head;
for (int i = 0; i < size && current != nullptr; ++i, current = current->next) {
if (current->data == target) return true;
}
return false;
}
// 删除数据元素
void remove(int value) {
if (!head) return;
if (head->data == value) {
ListNode* temp = head;
head = head->next;
delete temp;
size--;
return;
}
ListNode* prev = head, *current = head->next;
while (current != nullptr && current->data != value) {
prev = current;
current = current->next;
}
if (current != nullptr) {
prev->next = current->next;
delete current;
size--;
}
}
// 打印表的长度和所有元素
void print() const {
std::cout << "Length: " << size << std::endl;
ListNode* current = head;
while (current != nullptr) {
std::cout << current->data << " ";
current = current->next;
}
std::cout << std::endl;
}
};
int main() {
SequentialList list;
for (int i = 10; i <= 100; i += 10) {
list.insert(i);
}
// 操作示例
list.print(); // 打印初始列表
std::cout << "Finding element at index 20: " << (list.find(20) ? "Found" : "Not found") << std::endl;
std::cout << "Finding element 100: " << (list.find(100) ? "Found" : "Not found") << std::endl;
list.remove(50); // 删除值为50的元素
list.print();
return 0;
}
```
在这个例子中,我们首先创建了一个SequentialList类,包含了上述操作的方法。在main函数中,我们构造了这个列表并演示了如何执行查找、删除和打印操作。
阅读全文