对于结点类型为LNode的单链表,编写出下列算法(用c语言): typedef struct LNode{ ElemType data; struct LNode *next; }LNode,*LinkList; 1.删除单链表中的第i个结点。 2.统计单链表的长度
时间: 2024-10-01 12:03:31 浏览: 40
对于`LNode`类型的单链表,我们可以编写如下两个函数:
1. 删除单链表中的第i个节点:
```c
void deleteNode(LinkList list, int i) {
if (list == NULL || i <= 0) return; // 检查链表是否为空或索引越界
LinkList current = list, prev = NULL;
for (int index = 1; index < i && current != NULL; index++) {
prev = current;
current = current->next;
}
if (current == NULL) return; // 如果目标位置不存在
if (prev == NULL) { // 如果要删除的是头节点
list = current->next;
} else {
prev->next = current->next;
}
free(current); // 释放已删除节点的内存
}
```
2. 统计单链表的长度:
```c
int getLength(LinkList list) {
int length = 0;
while (list != NULL) {
length++;
list = list->next;
}
return length;
}
```
在这两个函数中,第一个函数通过遍历链表找到第i个节点,并将其从链表中移除;第二个函数通过循环结构累加每个节点,直到链表结束。
阅读全文