(1)初始化顺序表La (2)将La置为空表(3)销毁La(4)在La中插入一个新的元素(5)删除La中的某一元素(6)在La中查找某元素,若找到,则返回它在La中第一次出现的位置,否则返回0 (7)打印输出La中的元素值 请将main函数部分按照这个来写
时间: 2024-10-21 16:10:34 浏览: 25
数据结构实验一(顺序表基本操作)题目和源程序
以下是用C++编写一个简单的顺序表(链表)操作示例,假设我们有一个自定义的Node和List类:
```cpp
#include <iostream>
// 自定义节点
struct Node {
int value;
Node* next;
};
class List {
private:
Node* head;
public:
// 初始化空链表
void init() {
head = nullptr; // 初始头指针为NULL表示空表
}
// 插入新元素
void insert(int value) {
Node* newNode = new Node{value, nullptr};
if (!head) {
head = newNode; // 如果链表为空,直接将新节点设为头
} else {
Node* curr = head;
while (curr->next) {
curr = curr->next;
}
curr->next = newNode; // 否则在最后一个元素之后插入
}
}
// 删除元素
void removeElement(int value) {
if (!head) return; // 链表为空
if (head->value == value) {
Node* temp = head;
head = head->next;
delete temp; // 删除第一个匹配项并释放内存
return;
}
Node* curr = head;
while (curr->next && curr->next->value != value) {
curr = curr->next;
}
if (curr->next) { // 找到了目标元素
Node* toDelete = curr->next;
curr->next = curr->next->next;
delete toDelete;
}
}
// 查找元素并返回位置
size_t findElement(int value) const {
size_t pos = 0;
Node* curr = head;
while (curr) {
if (curr->value == value) {
return pos; // 成功找到,返回当前位置
}
curr = curr->next;
pos++;
}
return 0; // 没有找到,返回0
}
// 打印链表元素
void print() const {
Node* curr = head;
while (curr) {
std::cout << curr->value << " ";
curr = curr->next;
}
std::cout << std::endl;
}
};
int main() {
List la;
// 初始化顺序表
la.init();
// 插入新的元素
la.insert(10);
la.insert(20);
// 打印初始链表
la.print(); // 输出: 10 20
// 删除元素并打印
la.removeElement(10);
la.print(); // 输出: 20
// 查找元素并返回位置
std::cout << "元素20在链表中的位置是: " << la.findElement(20) << std::endl;
return 0;
}
```
上述代码实现了顺序表的基本操作,包括初始化、插入、删除、查找以及打印元素。注意,这里并没有实现“销毁List”的功能,因为动态分配的Node实例通常会在适当的时候自动回收。在实际项目中,可能需要手动管理内存以避免内存泄漏。
阅读全文