编写函数bool Delx(LinkList head,DataType x),删除带头结点单链表head中第一个值为x的结点。并构造测试用例进行测试c语言
时间: 2024-10-08 11:26:17 浏览: 41
在C语言中,你可以编写一个`Delx`函数用于从单链表中删除值为`x`的第一个节点。这个函数需要接收两个参数:链表头指针`head`和要删除的元素值`x`。这里是一个基本的函数实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表结构
typedef struct Node {
DataType data;
struct Node* next;
} LinkNode;
LinkNode* Delx(LinkNode* head, DataType x) {
if (head == NULL) return NULL; // 如果链表为空,直接返回
if (head->data == x) { // 如果头节点就是要删除的节点
LinkNode* temp = head;
head = head->next;
free(temp); // 释放头节点内存
return head;
}
LinkNode* current = head;
while (current->next != NULL && current->next->data != x) {
current = current->next;
}
if (current->next != NULL) { // 找到并删除值为x的节点
current->next = current->next->next;
free(current->next); // 释放找到的节点内存
}
return head;
}
// 测试用例
void test_Delx() {
// 创建链表
LinkNode* list = createLinkedList(); // 假设有一个createLinkedList()函数创建链表
insertAtStart(list, 5); // 插入数据
insertAtStart(list, 10);
insertAtStart(list, x);
// 删除特定值
LinkNode* new_head = Delx(list, x);
// 验证删除效果
printf("After deletion, first node is: %d\n", new_head->data); // 输出新的头节点数据,检查是否成功删除x
// 其他链表操作...
// 清理链表
destroyLinkedList(list);
}
int main() {
int x = 10; // 要删除的值
test_Delx();
return 0;
}
```
在这个例子中,`Delx`函数会在链表中查找值为`x`的节点,并将其前一个节点的`next`指针指向该节点的下一个,实现删除。`test_Delx`函数则展示了如何构造测试用例来验证`Delx`的功能。
阅读全文