每天进步一点点。
若萌新总结有误,望牛人不吝赐教。>_<
//定义一个顺序表
typedef struct seqlist
{
ElemType *data;
int listlength;
int listsize;
}seqlist;
//获取该位置元素的值
ElemType Getelem( seqlist *L, int pos)
{
if(pos <= 0 || pos > L->listlength+1)//位置合法性检验
{
printf("Error pos\n");
exit(1);
}
return L->data[pos-1];
}
//求顺序表大小
int ListSize( seqlist *L )
{
return L->listsize;
}
//求长度(元素个数)
int ListLength( seqlist *L )
{
return L->listlength;
}
//初始化线性表
int Initlist( seqlist *L )
{
printf("Start initseqlist...\n");
L->data = ( ElemType* )malloc( MAXSIZE*sizeof(ElemType) );//分配空间
if( NULL == L->data){
exit(1);
}
L->listlength = 0;//初始化长度
L->listsize = MAXSIZE;//初始化大小
printf("End initseqlist...\n");
return 1;
}
//初始化元素
int Initelem(seqlist *L)
{
int i = 0;
int n = 0;
int len = 0;
printf("Start initelem...\n");
printf("Please input length >: ");
scanf("%d", &len);
printf("Please input elem >:");
for( i = 1; i<len+1; i++)
{
scanf("%d",&n);
Insertelem( L, i, n );
}
printf("End initelem...\n");
return 1;
}
//插入元素
int Insertelem(seqlist *L, int pos, ElemType e )
{
int j = 0;
if( L->listlength >= L->listsize ) //插入位置合法性检验
{
printf("List is full!\n");
return 0;
}
if(pos <= 0 || pos > L->listlength+1)
{
printf("Error pos\n");
return 0;
}
for( j = L->listlength+1; j>pos-1; j--)//插入前将插入位置往后的元素后移
{
L->data[j] = L->data[j-1];
}
L->data[pos-1] = e;
L->listlength++;//长度加1
return 1;
}
//打印顺序表
int Printlist(seqlist *L)
{
int i = 0;
printf("=====================\n");
for( i = 0; i<L->listlength; i++)
{
printf("%4d", L->data[i]);
if( 4 == i%5 )//格式控制,每行打印五个元素
printf("\n");
}
printf("=====================\n");
return 1;
}
//删除元素
int Delectelem( seqlist *L, int pos, ElemType e )
{
int j = 0;
if( L->listlength >= L->listsize ) {//合法性检验
printf("List is full!\n");
return 0;
}
if(pos <= 0 || pos > L->listlength)
{
printf("Error pos\n");
return 0;
}
e = L->data[pos-1];
for( j = pos-1; j < L->listlength-1; j++ )//删除位置之后的元素前移
{
L->data[j] = L->data[j+1];
}
L->listlength--;
return e;
}
//替换pos位置元素的值
int UpdateElem(seqlist *L,int pos,ElemType e)
{
if(pos<1 || pos>L->listlength){
printf("Error pos!\n");
return 0;
}
L->data[pos-1] = e;
return 1;
}
成于坚持,败于止步!