データ構造例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; }