线性表的1.编写一个函数,能够创建一个线性表顺序表,可以对顺序表进行添加、删除元素。 2.编写一个函数,能够创建一个线性表链表,可以对链表表进行添加、删除元素。 建立及基本操作的实现30用C++语言
时间: 2024-10-16 17:20:45 浏览: 12
在C++中,我们可以分别创建顺序表(数组实现)和链表(节点结构体实现)来进行添加和删除元素的操作。
**1. 顺序表(数组实现)**
```cpp
#include <iostream>
// 定义顺序表的结构体
struct SeqList {
int* data; // 存储数据的数组
size_t size; // 当前元素的数量
size_t capacity; // 预留空间
};
// 创建顺序表
SeqList createSequentialList(size_t capacity) {
SeqList list;
list.data = new int[capacity];
list.size = 0;
list.capacity = capacity;
return list;
}
// 添加元素
void addElement(SeqList& list, int value) {
if (list.size == list.capacity) { // 如果已满,需要扩容
list.capacity *= 2;
int* newData = new int[list.capacity];
for (size_t i = 0; i < list.size; i++) {
newData[i] = list.data[i];
}
delete[] list.data;
list.data = newData;
}
list.data[list.size++] = value;
}
// 删除元素(这里假设通过索引删除)
void removeElement(SeqList& list, size_t index) {
if (index >= list.size) {
std::cout << "Index out of range." << std::endl;
return;
}
for (size_t i = index; i < list.size - 1; i++) {
list.data[i] = list.data[i + 1];
}
list.size--;
if (list.size == 0) {
delete[] list.data;
list.data = nullptr;
}
}
// 示例
int main() {
SeqList list = createSequentialList(5);
addElement(list, 10); // 添加元素
removeElement(list, 0); // 删除元素
return 0;
}
```
**2. 链表(动态节点实现)**
```cpp
#include <iostream>
using namespace std;
// 定义链表节点
class ListNode {
public:
int val;
ListNode* next;
ListNode(int x) : val(x), next(nullptr) {}
};
// 创建链表
ListNode* createLinkedList() {
return new ListNode(0);
}
// 在链表末尾添加元素
void addElement(ListNode*& head, int value) {
ListNode* newNode = new ListNode(value);
if (!head) {
head = newNode;
} else {
ListNode* current = head;
while (current->next) {
current = current->next;
}
current->next = newNode;
}
}
// 删除链表元素
void removeElement(ListNode*& head, int value) {
if (!head) return;
if (head->val == value) {
ListNode* temp = head;
head = head->next;
delete temp;
return;
}
ListNode* current = head;
while (current->next && current->next->val != value) {
current = current->next;
}
if (current->next) {
ListNode* temp = current->next;
current->next = current->next->next;
delete temp;
}
}
// 示例
int main() {
ListNode* listHead = createLinkedList();
addElement(listHead, 1); // 添加元素
removeElement(listHead, 1); // 删除元素
return 0;
}
```
阅读全文