データ構造例1.シーケンステーブルLの長さがnであることが知られており、シーケンステーブルからelem値のデータ要素を削除する試写アルゴリズムが実現される
//既知の順序テーブルLの長さはnであり、試写アルゴリズムは順序テーブルからelemの値を持つデータ要素//(ここでnとelemはキーボードから入力)を削除することを実現する.
# include
# include
# include
using namespace std;
const maxn = 1000 + 10;
typedef struct node
{
int *arr;
int length;
int maxsize;
}sqlist;
void createsqlist(sqlist &L)
{
L.arr = (int*)malloc(maxn * sizeof(int));
L.length = 0;
L.maxsize = maxn;
}
void insqlist(sqlist& L, int n)
{
int *p;
printf(" :
");
for(p = L.arr; p<L.arr + n; p++)
{
scanf("%d", p);
}
L.length = n;
}
void outsqlist(sqlist L)
{
int *p;
printf(" :
");
for(p = L.arr; p<L.arr+L.length; p++)
{
printf("%d ", *p);
}
printf("
");
}
void deletesqlist(sqlist& L, int elem)
{
int i = 0;
while(i<L.length && L.arr[i] != elem)
{
i++;
}
for(int j = i+1; j<L.length; j++)
{
if(L.arr[j] != elem)
{
L.arr[i++] = L.arr[j];
}
}
L.length = i;
}
int main()
{
// c++
ios::sync_with_stdio(false);
cin.tie(0);
sqlist L;
createsqlist(L);
int n, elem;
printf(" n :
");
scanf("%d", &n);
insqlist(L, n);
printf(" :
");
scanf("%d", &elem);
deletesqlist(L, elem);
outsqlist(L);
return 0;
}