用c++实现线性表的代码
时间: 2024-10-27 22:08:17 浏览: 23
当然可以。这里我会展示如何分别用C++实现顺序存储(数组)和链式存储(动态内存分配)的线性表。
**1. 顺序存储 (数组) 实现**
```cpp
#include <iostream>
using namespace std;
const int MAX_SIZE = 10; // 定义数组大小
struct Node {
int data;
};
class ArrayList {
private:
Node arr[MAX_SIZE];
int size;
public:
ArrayList() : size(0) {}
// 添加元素到尾部
void insert(int value) {
if (size == MAX_SIZE) {
cout << "Array is full!" << endl;
return;
}
arr[size++] = {value};
}
// 删除第一个匹配的元素
bool remove(int value) {
for (int i = 0; i < size; ++i) {
if (arr[i].data == value) {
memmove(&arr[i], &arr[i + 1], sizeof(Node) * (size - i - 1));
size--;
return true;
}
}
return false;
}
// 显示列表内容
void display() const {
for (int i = 0; i < size; ++i) {
cout << arr[i].data << " ";
}
cout << endl;
}
};
// 主函数示例
int main() {
ArrayList list;
list.insert(5);
list.insert(10);
list.display(); // 输出: 5 10
list.remove(10);
list.display(); // 输出: 5
return 0;
}
```
**2. 链式存储 (动态内存) 实现**
```cpp
#include <iostream>
struct Node {
int data;
Node* next;
Node(int val) : data(val), next(nullptr) {}
};
class LinkedList {
private:
Node* head;
public:
LinkedList() : head(nullptr) {}
// 插入新节点
void insert(int value) {
Node* newNode = new Node(value);
if (!head) {
head = newNode;
} else {
Node* current = head;
while (current->next) {
current = current->next;
}
current->next = newNode;
}
}
// 删除节点
bool remove(int value) {
if (!head) return false;
if (head->data == value) {
Node* temp = head;
head = head->next;
delete temp;
return true;
}
Node* current = head;
while (current->next && current->next->data != value) {
current = current->next;
}
if (current->next) {
Node* temp = current->next;
current->next = current->next->next;
delete temp;
return true;
}
return false;
}
// 显示链表内容
void display() {
Node* temp = head;
while (temp) {
cout << temp->data << " -> ";
temp = temp->next;
}
cout << "NULL" << endl;
}
};
// 主函数示例
int main() {
LinkedList list;
list.insert(1);
list.insert(2);
list.display(); // 输出: 1 -> 2 -> NULL
list.remove(2);
list.display(); // 输出: 1 -> NULL
return 0;
}
```
以上就是C++实现顺序存储和链式存储线性表的基本代码。
阅读全文