删除一个顺序表中所有值为x的元素的c语言代码
时间: 2023-05-22 16:06:01 浏览: 57
```
void delete_x(int* arr, int n, int x) {
int i, j;
for (i = 0, j = 0; i < n; i++) {
if (arr[i] != x) {
arr[j++] = arr[i];
}
}
n = j;
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
}
```
上述代码是删除一个顺序表中所有值为x的元素的c语言代码,其中arr是数组指针,n是数组长度,x是要删除的元素的值。
相关问题
删除顺序表中值为x的元素,c语言实现
可以使用以下代码实现:
void deleteElement(int arr[], int n, int x) {
int i, j;
for (i = , j = ; i < n; i++) {
if (arr[i] != x) {
arr[j] = arr[i];
j++;
}
}
n = j;
}
其中,arr是顺序表,n是顺序表的长度,x是要删除的元素的值。这个函数会遍历整个顺序表,将不等于x的元素移动到数组的前面,最后修改n的值,使得顺序表的长度变为新的值。
c语言程序 对长度为n的顺序表L,编写一个算法删除线性表所有值为x的数据元素
可以回答这个问题。以下是算法:
1. 初始化计数器count为0。
2. 从表头开始遍历顺序表L,如果当前元素的值等于x,则将count加1。
3. 如果当前元素的值不等于x,将该元素移动到表头,并将表头指针向后移动一位。
4. 重复步骤2和3,直到遍历完整个表。
5. 将表的长度减去count,即为删除后的表长。
代码实现:
void delete_x(SeqList &L, ElemType x) {
int count = 0;
for (int i = 0; i < L.length; i++) {
if (L.data[i] == x) {
count++;
} else {
L.data[i - count] = L.data[i];
}
}
L.length -= count;
}