SHAOXIAOJ正在加载中...

1629: 线性表-删除所有与指定值相等的元素(顺序存储)

金币值:2 定数:6 时间限制:1.000 s 内存限制:128 M
正确:12 提交:28 正确率:42.86% 命题人:
点赞量:0 收藏量:0 题目类型:程序 知识点: 数据结构-线性表

题目描述

已知长度为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行:要删除的值

输出格式

以原来的顺序输出删除后线性表的元素信息,以空格间隔(最后无空格)

输入样例    复制

5
8 6 2 6 7
6

输出样例    复制

8 2 7

提示

算法设计思路:
1. 调用初始化函数初始化线性表La。
2. 调用输入函数输入线性表La中的数据。
3. 输入要删除的值x。
4. 调用删除函数删除线性表La中与指定元素x相等的所有元素(特别提醒:删除时注意下标变量的变化)
5. 调用输出函数输出La中的剩余元素。