C语言中插入数据的代码
时间: 2024-09-23 15:05:00 浏览: 15
在C语言中,插入数据通常涉及到数组、链表或者动态内存分配的情况。这里分别给出一些基本的例子:
1. **数组插入**:
如果你想在已排序的数组中插入一个新元素,可以使用双指针法。例如,在整型数组中插入一个数到指定位置:
```c
void insert_sorted(int arr[], int size, int value, int pos) {
if (pos > size || pos < 0) {
printf("Invalid position.\n");
return;
}
for (int i = size - 1; i >= pos; i--) {
arr[i + 1] = arr[i];
}
arr[pos] = value;
}
```
2. **链表插入**:
对于链表,你可以创建一个新的节点然后将其链接到现有链表的适当位置:
```c
typedef struct Node {
int data;
struct Node* next;
} Node;
void insert_to_list(Node** head, int value, int position) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = value;
newNode->next = *head;
if (position == 0) {
newNode->next = NULL;
*head = newNode;
} else {
Node* current = *head;
for (int i = 0; i < position - 1 && current != NULL; i++) {
current = current->next;
}
if (current != NULL) {
newNode->next = current->next;
current->next = newNode;
} else {
printf("Position out of range.\n");
}
}
}
```
3. **动态数组插入**(如`vector`或`malloc`):
C++中可以使用STL的`std::vector`,或者直接通过`malloc`动态分配内存:
```cpp
#include <iostream>
#include <vector>
void insert_to_vector(std::vector<int>& vec, int value, int position) {
vec.insert(vec.begin() + position, value);
}
// 或者使用malloc动态数组
void insert_dynamic_array(int** array, int* capacity, int value, int position) {
if (position >= *capacity) {
*capacity *= 2; // 扩容
*array = realloc(*array, sizeof(int) * *capacity);
}
(*array)[position] = value;
}
```