删除顺序表中所有值为x的元素
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
//题目:删除顺序表中所有值为x的元素,时间O(n),空间O(1)
typedef int ElemType;
typedef struct{
ElemType *data;
int TableLen;
}SqList;
void InitList (SqList &L,int len)//初始化顺序表
{
L.TableLen = len;
L.data = (ElemType*)malloc(sizeof(ElemType)*L.TableLen);
int i;
srand(time(NULL));
for (i = 0;i < L.TableLen ; i++)
{
L.data[i] = rand()%100;
}
}
void print_list(SqList L)//打印函数
{
for(int i = 0; i<L.TableLen ;i++)
{
printf("%-3d",L.data[i]);
}
printf("\n");
}
void Del_List(SqList &L,ElemType x)
{
int k = 0,i;//用k记录和x不相等元素的个数
for(i = 0; i < L.TableLen ; i++)
{
if(L.data[i] != x)
{
L.data[k++] = L.data[i];
}
}
L.TableLen = k;
}
int main() {
SqList L;
InitList(L,10);//创建顺序表,长度为10
ElemType A[10] ={66,9,44,77,55,9,11,9,33,88};
memcpy(L.data,A,sizeof(A));
print_list(L);//打印原始顺序表做对照
Del_List(L,9);//删除所有值为9的数据元素
print_list(L);//打印操作完成后顺序表
return 0;
}