用c++ 编写代码,用顺序表或单链表实现线性表的创建、查找、插入和删除等算法。
时间: 2024-12-26 15:30:26 浏览: 7
在C++中,我们可以使用顺序表(数组实现)或单链表(节点结构实现)来操作线性表。这里分别给出这两种情况下的基本操作。
**顺序表(数组实现)**:
```cpp
#include <iostream>
using namespace std;
// 定义线性表元素类型
typedef int Element;
// 顺序表结构体
struct SequenceList {
Element data[100]; // 预设大小,可根据需要动态调整
int size;
};
// 创建顺序表
SequenceList create_list() {
SequenceList list;
list.size = 0; // 初始为空
return list;
}
// 插入元素
void insert(SequenceList& list, int index, const Element& value) {
if (index >= list.size) {
cout << "Insertion index out of range!" << endl;
return;
}
for (int i = list.size - 1; i >= index; i--) {
list.data[i + 1] = list.data[i];
}
list.data[index] = value;
list.size++;
}
// 查找元素
Element search(const SequenceList& list, int index) {
if (index < 0 || index >= list.size) {
return -1; // 表示未找到
}
return list.data[index];
}
// 删除元素
void remove(SequenceList& list, int index) {
if (index < 0 || index >= list.size) {
cout << "Deletion index out of range!" << endl;
return;
}
for (int i = index; i < list.size - 1; i++) {
list.data[i] = list.data[i + 1];
}
list.size--;
}
// 示例演示
int main() {
SequenceList sl = create_list();
// 插入、查找、删除操作...
}
```
**单链表(节点结构实现)**:
```cpp
#include <iostream>
// 定义链表节点
struct Node {
int data;
Node* next;
};
// 创建链表
Node* create_list() {
return nullptr; // 初始化为空链表
}
// 插入节点
Node* insert(Node*& head, int index, int value) {
// 省略细节,这里会新建一个新的节点,并处理插入位置和连接问题
}
// 查找节点
Node* search(Node* head, int index) {
if (!head || index < 0) return nullptr;
for (int i = 0; i < index && head; ++i, head = head->next)
;
return head ? head : nullptr;
}
// 删除节点
void remove(Node*& head, int index) {
if (!head || index < 0) return;
Node* prev = nullptr;
for (int i = 0; i < index && head; ++i, prev = head, head = head->next)
;
if (prev) prev->next = head->next;
else head = head->next;
}
// 示例演示
int main() {
Node* list_head = create_list();
// 插入、查找、删除操作...
}
```
阅读全文