综合题(删除类型)
/* 问题描述:一个顺序表,要求删除表中的制定制 时间复杂度为: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; }