/*
问题描述:一个顺序表,要求删除表中的制定制
时间复杂度为:O(n) 空间复杂度为O(1)
*/
#include<stdio.h>
#define MaxSize 50
typedef struct LNode{
int data[MaxSize];
int length;
}LNode;
//初始化顺序表
void init(LNode &L){
L.length = 0;
}
//构建顺序表
void create(LNode &L){
init(L);
int x;
scanf("%d",&x);
while(x!=-1&&L.length<MaxSize){
L.data[L.length] = x;
L.length++;
scanf("%d",&x);
}
}
//显示顺序表内容
void show(LNode L){
int i = 0;
while(i<L.length){
printf("%d ",L.data[i]);
i++;
}
}
//删除函数
void delete1(LNode &L,int x){
int k = 0;//用于记录不是X的数量
int j = 0;
while(j<L.length){
if(x == L.data[k]){
j++;
}else{
j++;
k++;
}
L.data[k] = L.data[j];
}
L.length = k;
}
int main(){
LNode L;
create(L);
show(L);
printf("\n");
delete1(L,3);
show(L);
return 0;
}