线性表
/*
已知长度为n的线性表A采用顺序存储结构。
设计一个时间复杂度为O(n)、空间复杂度为O(1)的算法,
该算法删除线性表中所有值为x的数据元素。
*/
/*
方法一:
找到第一个不相等的元素就放到链表第一个,第二个就放到第二个
*/
#include<stdio.h>
#include<stdlib.h>
typedef struct
{
int data[100];
int length;
}SqList;
void CreateList(SqList *&L,int a[],int n);
void delect(SqList *&L,int x);
int main()
{
int i;
SqList *L;
int a[] = {1,2,1,2,3,2};
CreateList(L,a,6);
delect(*&L,2);
for( i = 0; i < L->length; i++)
printf("%d\n",L->data[i]);
return 0;
}
void CreateList(SqList *&L,int a[],int n) //顺序表指针L
{
int i;
L = (SqList *)malloc(sizeof(SqList));
for( i=0; i<n; i++)
{
L->data[i]= a[i];
}
L->length = n;
}
void delect(SqList *&L,int x)
{
int k = 0;
int i = 0;
for( i = 0; i < L->length; i++)
{
if(L->data[i] != x)
{
L->data[k] = L->data[i];
k++;
}