对于结点类型为LNode的单链表,用数据结构法编写出下列算法: typedef struct LNode{ ElemType data; struct LNode *next; }LNode,*LinkList; 1.删除单链表中的第i个结点。 2.统计单链表的长度
时间: 2024-10-09 11:04:30 浏览: 14
对于`LNode`类型的单链表,你可以按照以下步骤实现这两个算法:
1. 删除单链表中的第i个节点(假设0为第一个节点):
```c
void deleteNode(LinkList* head, int i) {
if (head == NULL || i < 0) return; // 验证链表非空且索引合法
LinkList temp = head, prev = NULL;
// 如果要删除的是头节点
if (i == 0) {
head = head->next;
free(temp); // 释放头节点
} else {
for (int j = 0; temp != NULL && j < i - 1; j++) {
prev = temp;
temp = temp->next;
}
// 到达目标节点,删除它
if (temp != NULL) {
prev->next = temp->next;
free(temp); // 释放目标节点
} else {
printf("Error: Index %d out of range.\n", i);
}
}
}
```
2. 统计单链表的长度:
```c
int countNodes(LinkList head) {
if (head == NULL) return 0;
int length = 0;
while (head != NULL) {
length++;
head = head->next;
}
return length;
}
```