数据结构在表长中插入一个元素的原码
时间: 2024-06-11 18:04:51 浏览: 10
由于问题不明确,以下提供两种插入元素的方式的代码:
1. 将新元素插入到表头
假设要在一个单链表中插入一个元素,将其插入到表头处,可以使用如下代码:
```c++
// 定义单链表节点
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {}
};
// 在单链表头部插入元素
ListNode* insertAtHead(ListNode* head, int val) {
ListNode* newNode = new ListNode(val);
newNode->next = head;
return newNode;
}
```
其中,`ListNode` 是单链表的节点结构体,包含一个整型值 `val` 和一个指向下一个节点的指针 `next`。`insertAtHead` 函数接受一个指向单链表头部的指针 `head` 和要插入的元素值 `val`,创建一个新的节点 `newNode`,将其指向原来的头节点,再返回新的头节点 `newNode`。
2. 将新元素插入到表尾
假设要在一个动态数组中插入一个元素,将其插入到表尾处,可以使用如下代码:
```c++
// 定义动态数组类
class DynamicArray {
public:
DynamicArray() {
data = NULL;
size = 0;
capacity = 0;
}
~DynamicArray() {
if (data != NULL) {
delete[] data;
data = NULL;
}
}
// 在动态数组尾部插入元素
void insertAtBack(int val) {
if (size >= capacity) {
// 如果数组已满,需要扩容
int newCapacity = (capacity == 0 ? 1 : capacity * 2);
int* newData = new int[newCapacity];
for (int i = 0; i < size; i++) {
newData[i] = data[i];
}
if (data != NULL) {
delete[] data;
}
data = newData;
capacity = newCapacity;
}
data[size++] = val;
}
private:
int* data; // 数据存储区
int size; // 数组当前元素个数
int capacity; // 数组容量
};
```
其中,`DynamicArray` 是动态数组类,包含一个指向数据存储区的指针 `data`、当前元素个数 `size` 和数组容量 `capacity`。`insertAtBack` 函数接受一个要插入的元素值 `val`,如果数组已满,则需要扩容。扩容时,将原来的数据复制到新的存储区中,并释放原来的存储区。最后将要插入的元素放到数组末尾,更新当前元素个数。