線形テーブルの順序格納——順序テーブル
2282 ワード
Description
1つの順序線形テーブルの初期化、挿入、削除、アクセス、クリアなどの操作を実現し、これらの操作を呼び出し、以下の機能を実現する.
I a bは、シーケンステーブルのa番目の位置に要素bを挿入する.
D aは、シーケンステーブルのビットシーケンスaのメタ数を削除し、その要素値を出力する.
G aは、出力シーケンステーブルにおけるビットシーケンスがaのメタ数値である.
L aは、出力順序テーブルの要素値がaの最初の位置である.
C、クリアシーケンステーブルのすべての要素数;
順序テーブルの定義は次のとおりです.
Input
最初の行には2つの整数nがあり、mはそれぞれ初期線形テーブルの長さと操作の個数を表し、下にはm行があり、各行は上の5つの操作のうちの1つである.
Output
操作要求の出力を出力します.
Sample Input
5 6 1 2 3 4 5 D 3 D 1 G 1 G 2 G 3 L 4 Sample Output
3 1 2 4 5 2手書きでvectorを1つ書いて、私もどうして私がこれを書くのか分かりません.どうせ書いたら貯金しましょう.
1つの順序線形テーブルの初期化、挿入、削除、アクセス、クリアなどの操作を実現し、これらの操作を呼び出し、以下の機能を実現する.
I a bは、シーケンステーブルのa番目の位置に要素bを挿入する.
D aは、シーケンステーブルのビットシーケンスaのメタ数を削除し、その要素値を出力する.
G aは、出力シーケンステーブルにおけるビットシーケンスがaのメタ数値である.
L aは、出力順序テーブルの要素値がaの最初の位置である.
C、クリアシーケンステーブルのすべての要素数;
順序テーブルの定義は次のとおりです.
typedef int ElemType;
typedef struct {
ElemType *elem;
int length;
int listsize;
} Sqlist;
Input
最初の行には2つの整数nがあり、mはそれぞれ初期線形テーブルの長さと操作の個数を表し、下にはm行があり、各行は上の5つの操作のうちの1つである.
Output
操作要求の出力を出力します.
Sample Input
5 6 1 2 3 4 5 D 3 D 1 G 1 G 2 G 3 L 4 Sample Output
3 1 2 4 5 2手書きでvectorを1つ書いて、私もどうして私がこれを書くのか分かりません.どうせ書いたら貯金しましょう.
#include
#include
#define sta 100
#define add 10
#define OVERFLOW -2
#define INFEASIBLE -1
typedef struct {
int *vec;
int len;
int siz;
}List;
void init(List &l)
{
l.vec=(int *)malloc(sta*sizeof(int));
if(!l.vec)
exit(OVERFLOW);
l.len=0;
l.siz=sta;
}
void update(List &l,int val)
{
int *newbase;
if(l.len>=l.siz)
{
newbase=(int *)realloc(l.vec,(l.siz+add)*sizeof(int));
if(!newbase)
return ;
l.vec=newbase;
l.siz+=add;
}
l.vec[l.len]=val;
++l.len;
}
void insert(List &l,int pos,int val)
{
if(pos<1||pos>l.len+1)
return ;
int *newbase;
if(l.len>=l.siz)
{
newbase=(int *)realloc(l.vec,(l.siz+add)*sizeof(int));
if(!newbase)
return ;
l.vec=newbase;
l.siz+=add;
}
int *fin;
fin=&(l.vec[pos-1]);
for(int *i=&(l.vec[l.len-1]);i>=fin;i--)
*(i+1)=*i;
*fin=val;
++l.len;
}
int judge(int a,int b)
{
if(a==b)
return 1;
return 0;
}
int del(List &l,int pos)
{
if(pos<1||pos>l.len)
return -1;
int *s,*fin,ans;
s=&(l.vec[pos-1]);
ans=*s;
fin=&(l.vec[l.len-1]);
for(;s