#includestruct list* Makelist();
void Addlist(list* L,int data,int insert);
struct list
{
int data[10];
int last;
};
int main()
{
list* L;
int data;
int insert;
L = Makelist();
scanf("%d",&data);
scanf("%d",&insert);
Addlist(L,data,insert);
printf("%d\n",L->last);
printf("%d",L->data[L->last]);
return 0;
}
//存在问题:
//新建一个顺序线性表时,不存在元素所以LAST指向-1,但是从0位置插入元素后,LAST的指向并没有改变,并且DATA[LAST]的值并不存在;
struct list* Makelist()
{
list* L;
L = (struct list *)malloc(sizeof(struct list));
L->last = -1;
return L;
}
void Addlist(list* L,int data,int insert)
{
int i;
if (L->last>=10)
{
printf("表已满");
return ;
}
if ( insert<0 || insert>L->last+1 )
{ /* 检查插入位置的合法性 */
printf("位置不合法");
return ;
}
for (i = L->last; i>=insert-1; i--) //在这里存在问题
{//问题解决:出现在insert,因为insert要插的位置是0前面,而此时的线性表中没有元素,last指向-1,所以要把
L->data[i+1] = L->data[i];//insert-1,从这个元素开始之后的每一个元素都要往后移动,给新插入的元素一个位置,就是insert的位置.
L->data[insert] = data;
L->last++;
return ;
}
}
//已解决
void Delete(list* L,int del)
{
int i;
if (del<0||del>L->last+1)
{
printf("yi man");
return ;
}
for(i = del+1; i<10; i++)
{
L->data[i] = L->data[i+1];
L->last--;
}
}
//还缺一个查找