用C语言实现线性表的以下功能: 1.初始化顺序表2.插入数据到顺序表3.查询指定元 素在顺序表中的位置4.通过指定位置删除顺序表的 节点5修改指定位置的元素
时间: 2024-10-01 20:06:06 浏览: 35
[C语言数据结构]线性表-顺序表介绍及其基础操作函数实现
在C语言中,我们可以使用数组或链表来实现线性表。这里我们以单向链表为例来介绍如何实现这些功能:
1. 初始化顺序表 (动态内存分配):
```c
typedef struct Node {
int data;
struct Node* next;
} Node;
void createList(Node** head) {
*head = NULL; // 初始化链表头指针为空
}
```
2. 插入数据到顺序表:
```c
void insert(int value, Node** head) {
Node* newNode = (Node*)malloc(sizeof(Node)); // 动态分配内存
newNode->data = value;
newNode->next = *head; // 将新节点连接到链表头部
*head = newNode;
}
```
3. 查询指定元素在顺序表中的位置:
```c
int search(int target, Node* head) {
Node* current = head;
int index = 0;
while (current != NULL && current->data != target) {
current = current->next;
index++;
}
return current != NULL ? index : -1; // 如果找到返回索引,未找到则返回-1
}
```
4. 删除顺序表的节点:
```c
void deleteNode(int value, Node** head) {
if (*head == NULL) return; // 空表无需处理
if ((*head)->data == value) { // 首节点值相等,直接删除首节点
Node* temp = *head;
*head = (*head)->next;
free(temp);
} else {
Node* current = *head;
Node* prev = NULL;
while (current != NULL && current->data != value) {
prev = current;
current = current->next;
}
if (current != NULL) { // 找到要删除的节点
prev->next = current->next;
free(current); // 释放节点内存
}
}
}
```
5. 修改指定位置的元素:
```c
void update(int position, int new_value, Node* head) {
if (position < 0 || head == NULL) return;
Node* current = head;
for (int i = 0; i < position; i++) {
current = current->next;
}
if (current != NULL) {
current->data = new_value;
}
}
```
阅读全文