C语言函数:void Dellndex (LinkList llist,int i)用于删除输入链表中的第i个结点,写出这个函数
时间: 2024-09-19 14:16:43 浏览: 33
在C语言中,要编写一个名为`Dellndex`的函数来删除链表中的指定节点,假设`LinkList`是一个链表结构体,包含一个指向下一个节点的指针`next`以及存储数据的成员变量。删除第i个节点通常需要遍历链表找到目标节点并更新其前一个节点的`next`指针。这是一个简单的示例:
```c
#include <stdio.h>
typedef struct Node {
int data;
struct Node* next;
} LinkList;
// 定义函数头,接收链表指针和索引作为参数
void Dellndex(LinkList* llist, int i) {
// 链表为空或i小于0的情况,直接返回
if (!llist || i <= 0)
return;
// 初始化当前节点为头节点
LinkList* current = llist;
LinkList* previous = NULL;
// 遍历链表直到找到第i个节点
for (int j = 1; j < i && current != NULL; j++) {
previous = current;
current = current->next;
}
// 如果找到了第i个节点
if (current != NULL) {
// 更新前一个节点的next指针,使其跳过目标节点
if (previous == NULL) // 删除的是头节点
llist = current->next;
else
previous->next = current->next;
// 释放目标节点的内存
free(current);
}
}
// 示例链表操作
// 注意:这里只是函数定义,实际应用中你需要有链表创建、插入和显示等功能
LinkList* createList(); // 创建链表的函数
void displayList(LinkList* llist); // 显示链表的函数
int main() {
LinkList* llist = createList();
displayList(llist);
// 调用函数删除某个节点
Dellndex(llist, 2); // 这里删除索引为2的节点
displayList(llist);
return 0;
}
```