C语言怎么实现顺序表的插入完整代码
时间: 2024-10-08 13:00:47 浏览: 8
在C语言中,顺序表是一种简单线性数据结构,通常通过数组实现。以下是一个基本的顺序表(数组形式)的插入函数示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义顺序表节点结构体
typedef struct Node {
int data; // 数据域
struct Node* next; // 指向下一个节点的指针
} ListNode;
// 动态分配顺序表节点
ListNode* createNode(int value) {
ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));
if (newNode != NULL) {
newNode->data = value;
newNode->next = NULL;
}
return newNode;
}
// 插入函数,将新元素添加到指定位置
void insertAt(ListNode** headRef, int index, int value) {
if (*headRef == NULL || index < 0) {
printf("List is empty or invalid index.\n");
return;
}
ListNode* newNode = createNode(value);
if (index == 0) { // 插入在头部
newNode->next = *headRef;
*headRef = newNode;
} else {
ListNode* current = *headRef;
for (int i = 0; i < index - 1 && current != NULL; i++) {
current = current->next;
}
if (current != NULL) {
newNode->next = current->next;
current->next = newNode;
} else {
printf("Invalid index.\n");
}
}
}
// 打印顺序表
void printList(ListNode* node) {
while (node != NULL) {
printf("%d -> ", node->data);
node = node->next;
}
printf("NULL\n");
}
int main() {
ListNode* head = NULL;
insertAt(&head, 0, 10); // 在第一个位置插入10
insertAt(&head, 2, 20); // 在第三个位置插入20
printList(head); // 输出: 10 -> NULL
return 0;
}
```
这个程序首先创建了一个顺序表,并在指定的位置插入新的元素。注意,因为C语言数组下标从0开始,所以`insertAt`函数的`index`参数也是从0开始计数的。