データ構造の順序表の作成、挿入、削除、位置決め
5566 ワード
リニアテーブルの基本操作初期化-空の線形テーブルSqList Init(SqList*L) を構築する.挿入-線形テーブルのi番目の要素の前に、新しい要素SqList Insert(SqList*L,int i,int e) を挿入する.削除-第iの要素SqListDeleteを削除(SqList*L,int i,int*) 位置決め-指定要素の位置SqListLocate(SqList*L,int e)を求めて具体的に を実現します.リニアテーブル記憶構造記述(構造体) 初期化 挿入 削除 位置決め
#define INIT_SIZE 100
#define INCREMENT 10
typedef struct
{
int *elem;
int length;
int listsize;
}SqList;
int SqListInit(SqList *L)
{
L->elem=(int *)malloc(INIT_SIZE*sizeof(int)); //
if(!L->elem)
return 0;
L->length=0;
L->listsize=INIT_SIZE; //
return 1;
}
int SqListInsert(SqList *L,int i,int e)
{
int j;
int *newbase;
if(i<1 || i>L->length+1) //
return 0;
if(L->length>=L->listsize) //
{
//
newbase=(int *)realloc(L->elem,(L->listsize+INCREMENT)*sizeof(int));
if(!newbase) //
return 0;
L->elem=newbase;
L->listsize +=INCREMENT;
}
for(j=L->length-1;j>=i-1;j--) //
{
L->elem[j+1]=L->elem[j];
}
L->elem[i-1]=e; // e
++L->length; // 1
return 1;
}
int SqListDelete(SqList *L,int i,int *e)
{
int j;
if(i<1 || i>L->length) //
return 0;
*e=L->elem[i-1]; // e
for(j=i-1;jlength-1;j++) //
{
L->elem[j]=L->elem[j+1];
}
--L->length; // 1
cout<<" "<" "<<*e<<" "<return 1;
}
int SqListLocate(SqList *L,int e)
{
int i;
while(i<=L->length&&L->elem[i-1]!=e)
i++;
if(i<=L->length)
{
cout<<" "<" "<return 1;
}
else
{
cout<<" "<" "<return 0;
}
}
ソースリンクhttp://download.csdn.net/detail/qq_28397005/98122882は転載して声明を下さい、ありがとうございます.