Chapter 2
就叫大嘴吧
编辑于 2023年08月17日 05:59
收录于文集
共5篇

对长度为 n 的顺序表L,编写一个时问复杂度为 O(n)、空间复杂度为 O(1)的算法,该算法删除线性表中所有值为 x 的数据元素。

代码块
clike
自动换行
复制代码
#include<stdio.h>
#include<stdlib.h>

#define Max 100

struct SqList{
	int a[Max] = {66, 33, 66, 11, 66, 0, 22, 88, 99, 66};
	int length = 10;
};

void delete_X(SqList &s, int x){ 
	int count = 0;
	
	for(int i = 0; i < s.length; i++){
		if(s.a[i] == x){
			// 记录当前值为 x 的元素个数 
			count++;
		}
		else{
			// 将 值为 非 x 的元素 替换 值为 x 的元素 
			s.a[i - count] = s.a[i];
		}
	}
	// 更新顺序表的长度 
	s.length = s.length - count;
}

// 打印顺序表
void show(SqList s){
	for(int i = 0; i < s.length; i++){
		printf("%d	", s.a[i]);
	}
	printf("\n"); 
}

int main(){
	
	SqList s;
	
	printf("删除前:"); 
	show(s);
	
	delete_X(s, 66);
	
	printf("删除后:");
	show(s);
	
	return 0;
}
复制成功