程序设计:从有序的顺序表中删除所有其值重复的元素,使表中所有元素的值均不同
时间: 2023-11-10 21:15:10 浏览: 31
思路:
1. 遍历有序顺序表,记录当前元素值和上一个元素值。
2. 如果当前元素值和上一个元素值相等,说明重复,将该元素删除。
3. 如果不相等,继续遍历。
代码实现:
```python
def delete_duplicates(lst):
i = 1
while i < len(lst):
if lst[i] == lst[i-1]:
lst.pop(i)
else:
i += 1
return lst
```
测试:
```python
lst = [1, 2, 2, 3, 4, 4, 4, 5, 5, 6]
print(delete_duplicates(lst)) # [1, 2, 3, 4, 5, 6]
```
相关问题
从有序顺序表中删除所有其值重复的元素使表中所有元素的值均不同c++代码
以下是一个简单的 C 代码,用于从有序顺序表中删除所有重复元素:
```c
#include <stdio.h>
void removeDuplicates(int arr[], int n) {
int i, j, k;
for (i = 0; i < n; i++) {
for (j = i + 1; j < n;) {
if (arr[j] == arr[i]) {
for (k = j; k < n; k++) {
arr[k] = arr[k + 1];
}
n--;
} else {
j++;
}
}
}
}
int main() {
int arr[] = {1, 2, 2, 3, 4, 4, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
removeDuplicates(arr, n);
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
这个程序使用了两个嵌套的循环来遍历数组中的所有元素,并删除所有重复的元素。在内部循环中,如果找到了一个重复的元素,就将其后面的所有元素向前移动一个位置,并将数组的长度减少1。最后,程序输出了删除重复元素后的数组。
设计顺序表sqlist。编写程序,实现从sqlist中,删除具有给定值x的所有元素。
设计顺序表sqlist的SQL语句如下:
CREATE TABLE sqlist (
id INT PRIMARY KEY AUTO_INCREMENT,
value INT NOT NULL
);
编写程序,实现从sqlist中删除具有给定值x的所有元素的代码如下:
def delete_x_from_sqlist(sqlist, x):
i = 0
while i < len(sqlist):
if sqlist[i] == x:
sqlist.pop(i)
else:
i += 1