1629: 线性表-删除所有与指定值相等的元素(顺序存储)
金币值:2
定数:6
时间限制:1.000 s
内存限制:128 M
正确:37
提交:95
正确率:38.95% 命题人:
题目描述
已知长度为n的线性表A采用顺序存储结构,编写程序实现一个时间复杂度为O(n),空间复杂度为O(1)的算法,该算法可删除线性表中所有值为x的数据元素。
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef int ElemType;
typedef struct {
ElemType *elem; // 顺序表数组的基址
int length; // 顺序表当前元素个数
} SqList;
void initList(SqList &L);
void inputList(SqList &L);
void printList(SqList L);
void listDelete(SqList &La,ElemType e);
int main(void) {
SqList La;
ElemType x;
initList(La);
inputList(La);
scanf("%d",&x); // 输入要删除的值
listDelete(La,x);
printList(La);
return 0;
}
void initList(SqList &L) {
L.elem=(ElemType*)malloc(MAXSIZE*sizeof(ElemType));
L.length=0;
}
void inputList(SqList &L) {
scanf("%d",&L.length);
for(int i=0; i<L.length; i++) scanf("%d",&L.elem[i]);
}
void printList(SqList L) {
for(int i=0; i<L.length; i++) printf("%d ",L.elem[i]);
}
/*仅提交以下代码*/
void listDelete(SqList &La,ElemType e) {
}
输入格式
输入数据有3行:
第1行:线性表中元素的数目
第2行:线性表中的元素,以空格间隔
第3行:要删除的值
第1行:线性表中元素的数目
第2行:线性表中的元素,以空格间隔
第3行:要删除的值
输出格式
以原来的顺序输出删除后线性表的元素信息,以空格间隔(最后无空格)
输入样例 复制
5
8 6 2 6 7
6
输出样例 复制
8 2 7
提示
算法设计思路:
1. 调用初始化函数初始化线性表La。
2. 调用输入函数输入线性表La中的数据。
3. 输入要删除的值x。
4. 调用删除函数删除线性表La中与指定元素x相等的所有元素(特别提醒:删除时注意下标变量的变化)。
5. 调用输出函数输出La中的剩余元素。
1. 调用初始化函数初始化线性表La。
2. 调用输入函数输入线性表La中的数据。
3. 输入要删除的值x。
4. 调用删除函数删除线性表La中与指定元素x相等的所有元素(特别提醒:删除时注意下标变量的变化)。
5. 调用输出函数输出La中的剩余元素。