C语言插入数据算法。谁能帮我解释一下每行都是什么意思。越详细越好。

#include "stdio.h"
#define maxlen 100
typedef struct{
int data[100];
int last;
}Seq;
int SqLempty(Seq *L)
{
if(L->last+1>=maxlen)
return 1;
else
return 0;
}
void SqLinsert(Seq *L,int i,int x)
{
int j;
if(SqLempty(L)==1)
{printf("overflow");
}
else if(i<1||(i>L->last+2))
{
printf("error");
}
else
{
for(j=L->last;j>=i-1;j--)
L->data[j+1]=L->data[j];
L->data[i-1]=x;
L->last=L->last+1;
}
for(i=0;i<L->last+1;i++)
printf("%d ",L->data[i]);

}
main()
{
int j,k;
Seq x,*L;
L=&x;
L->last=6;
L->data[0]=32;
L->data[1]=51;
L->data[2]=65;
L->data[3]=9;
L->data[4]=23;
L->data[5]=7;
L->data[6]=47;
printf("请问您想在什么位置插入数据?");
scanf("%d",&j);
printf("您想要插入什么数据?");
scanf("%d",&k);
SqLinsert(L,j,k);

}

第1个回答  2013-04-25
#include "stdio.h"
#define maxlen 100
typedef struct{
int data[100];
int last;
}Seq; //定义一个数据结构
int SqLempty(Seq *L) //判断数组是否满
{
if(L->last+1>=maxlen) //如果数组长度等于超过最大长度,表示数组已满
return 1;
else
return 0;
}
void SqLinsert(Seq *L,int i,int x) //插入运算
{
int j;
if(SqLempty(L)==1) //数组满,无法插入
{printf("overflow");
}
else if(i<1||(i>L->last+2)) //i代表插入位置,不能小于1也不能比数组长度+1大
{
printf("error");
}
else
{
for(j=L->last;j>=i-1;j--)
L->data[j+1]=L->data[j]; //插入位置之后的元素往后移一格
L->data[i-1]=x; //插入元素
L->last=L->last+1; //元素总数+1
}
for(i=0;i<L->last+1;i++) //输出所有元素
printf("%d ",L->data[i]);
}
main()
{
int j,k;
Seq x,*L;
L=&x;
L->last=6;
L->data[0]=32;
L->data[1]=51;
L->data[2]=65;
L->data[3]=9;
L->data[4]=23;
L->data[5]=7;
L->data[6]=47; //定义出师序列
printf("请问您想在什么位置插入数据?");
scanf("%d",&j);
printf("您想要插入什么数据?");
scanf("%d",&k);
SqLinsert(L,j,k); //调用 插入数据 函数
}本回答被提问者采纳
相似回答