1629: 线性表-删除所有与指定值相等的元素(顺序存储)
金币值:2
定数:6
时间限制:1.000 s
内存限制:128 M
正确:12
提交:28
正确率:42.86% 命题人:
题目描述
已知长度为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中的剩余元素。