/*对长度为n的顺序表L,编写一个时间复杂度为O(n)、空间复杂度为O(1)的算法
,该算法删除线性表中所有值为x的数据元素*/
#include<stdio.h>
#include<stdlib.h>
#define InitSize 10
typedef int ElemType;
typedef struct{
ElemType *data;
int length;
}SqList;
bool InitList(SqList &L)
{
L.data = (ElemType*)malloc(sizeof(ElemType)*InitSize);
L.length = 0;
return true;
}
bool deleSameVal(SqList &L,ElemType e)
{
int k=0;
for(int i=0;i<L.length;++i)
if(L.data[i]!=e)
{
L.data[k] = L.data[i];
++k;
}
L.length = k;
return true;
}
bool printList(SqList L)
{
for(int i=0;i<L.length;++i)
printf("%d ",L.data[i]);
printf("\n");
return true;
}
void main()
{
SqList L;
InitList(L);
int a[5] = {1,2,3,3,3};
for(int i=0;i<5;++i)
{
L.data[i] = a[i];
++L.length;
}
printList(L);
deleSameVal(L,3);
printList(L);
}