敲c语言代码:已知线性表 LA存放数值 ,现需要删除指定下标为i的元素,并把删除元素后的LA输出
时间: 2024-09-18 11:16:49 浏览: 36
在 C 语言中,如果你有一个动态数组(如`struct List`或`typedef int List[10];`的简单整数数组),删除指定下标的元素并打印剩余部分,你需要考虑以下几个步骤:
```c
#include <stdio.h>
#include <stdlib.h> // for malloc and free
// 假设我们有这样一个结构体表示线性表
typedef struct Node {
int data;
struct Node* next;
} Node;
// 删除节点函数,传入指针和目标索引i
void deleteNode(Node** head, int i) {
if (*head == NULL || i <= 0) return; // 检查表是否为空或索引无效
Node* current = *head;
// 如果我们要删除的是第一个元素
if (i == 1) {
*head = current->next;
free(current);
return;
}
// 遍历直到找到第i个节点的前一个节点
for (int j = 1; j < i && current != NULL; j++) {
current = current->next;
}
// 检查找到了正确的节点
if (current == NULL) return;
// 将当前节点的下一个节点保存到它的前一个节点
current->next = current->next->next;
free(current); // 释放被删除的节点内存
}
// 打印线性表
void printList(Node* head) {
while (head != NULL) {
printf("%d ", head->data);
head = head->next;
}
printf("\n");
}
int main() {
// 初始化线性表示例
Node* list = (Node*)malloc(sizeof(Node)); // 创建头节点
list->data = 1;
list->next = NULL;
// 添加更多元素...
// ...
// 要删除的索引
int index_to_delete = 3;
// 删除节点
deleteNode(&list, index_to_delete);
// 打印删除元素后的列表
printList(list);
// 清理内存
if (list != NULL) {
Node* temp = list;
while (temp != NULL) {
Node* next_temp = temp->next;
free(temp);
temp = next_temp;
}
}
return 0;
}
```
请注意,这个示例假设你已经有了向线性表添加元素的部分。在`main`函数中,你需要替换`addElementsToList()`函数以填充实际的数据。
阅读全文