c语言线性表顺序插入运算函数
时间: 2024-10-16 19:19:31 浏览: 3
在C语言中,线性表(数组或链表)的顺序插入操作通常涉及以下几个步骤:
1. **静态数组插入**:
- 如果是在固定大小的数组中插入,你需要找到插入位置,将后续元素右移一位(如果数组满则可能会触发越界检查)。
```c
void insert_array(int arr[], int size, int index, int value) {
if (index < 0 || index > size) return;
for (int i = size - 1; i >= index; i--) {
arr[i + 1] = arr[i];
}
arr[index] = value;
}
```
2. **动态数组插入**(如一维指针数组):
- 类似地,遍历从目标插入位置到数组结尾,逐个把元素后移。
```c
void insert_dynamic_array(int* arr, int size, int index, int value) {
if (index >= size) {
// 扩容新数组
arr = realloc(arr, (size + 1) * sizeof(int));
}
for (int i = size; i > index; i--) {
arr[i] = arr[i - 1];
}
arr[index] = value;
}
```
3. **链接列表插入**:
- 对于链表,你需要创建一个新的节点并调整头结点的指针,然后依次调整后续节点的指针。
```c
struct Node {
int data;
struct Node* next;
};
void insert_linked_list(struct Node** head, int value, int index) {
struct Node* newNode = malloc(sizeof(struct Node));
newNode->data = value;
newNode->next = *head;
if (index == 0) {
*head = newNode;
} else {
struct Node* current = *head;
for (int i = 1; i < index && current != NULL; i++) {
current = current->next;
}
if (current) {
newNode->next = current->next;
current->next = newNode;
} else {
printf("Index out of bounds.");
}
}
}
```
阅读全文