2.用C语言写一个删除算法 deleteV _ seq ( palist , x ),在 palist 所指的顺序表中,删除值为 x 的元素,返回成功与否的标志。
时间: 2024-09-22 17:06:48 浏览: 39
shunxubiao.zip_shunxubiao_算法_顺序表
在C语言中,编写一个删除顺序表(数组或链表)中特定值x的函数`deleteV_seq`,通常涉及到线性搜索和列表元素的替换或移除。这里是一个简单的示例,假设我们有一个整数顺序表`palist`,它是一个指向整数的指针数组:
```c
#include <stdio.h>
// 定义结构体表示顺序表的节点
typedef struct {
int data;
struct Node *next; // 指向下一个节点的指针
} Node;
// 删除顺序表中值为x的元素并返回是否成功
int deleteV_seq(Node **palist, int x) {
Node *prev = NULL, *current = *palist;
// 遍历顺序表
while (current != NULL) {
if (current->data == x) { // 找到目标元素
if (prev == NULL) { // 如果是第一个元素
*palist = current->next;
} else {
prev->next = current->next;
}
free(current); // 释放当前元素内存
return 1; // 成功删除,返回1
}
prev = current;
current = current->next;
}
// 如果没有找到x,返回0表示未找到并继续存在
return 0;
}
// 示例主程序
void main() {
Node *parray = malloc(sizeof(Node)); // 创建顺序表的第一个节点
parray->data = 10;
parray->next = NULL;
// 添加更多元素...
// ...
int result = deleteV_seq(&parray, 10);
if (result) {
printf("Element deleted successfully.\n");
} else {
printf("Element not found or deletion failed.\n");
}
}
阅读全文