还是顺序表的执行有关问题,请问

还是顺序表的执行问题,请教!
#include<stdio.h>
#define MaxSize 100
/*定义顺序表*/
typedef struct
{
int list[MaxSize];
int size;
}SeqList;
/*初始化*/
void ListInitiate(SeqList *L)
{
L->size=0;
}
/*求元素个数*/
int ListLength(SeqList L)
{
return L.size;
}
/*插入数据*/
int ListInsert(SeqList *L,int i,int x)
{
int j;
if(L->size>=MaxSize)
{
printf("已满,无法插入!\n");
return 0;
}
else if(i<0 || i>L->size)
{
printf("i值不合法!\n");
return 0;
}
else
{
for(j=L->size;j>i;j--)
L->list[j]=L->list[j-1];
L->list[j]=x;
L->size++;
return 1;
}
......
/*主函数 */
main()
{
  SeqList mylist;
int i=0,x=0,length=0;
int choice,position;
ListInitiate(&mylist);
for(;;)
{
i=0,x=0;
printf("\t\t*******************主菜单******************\n");
printf("\t\t* 1.输入结点 *\n");
printf("\t\t* 2.结点个数 *\n");
printf("\t\t* 3.插入结点 *\n");
printf("\t\t* 4.输出结点 *\n");
printf("\t\t* 5.删除结点 *\n");
printf("\t\t* 6.退出系统 *\n");
printf("\t\t************http://www.roufo.com***********\n");
printf("\t\t请输入你的选择项:");
scanf("%d",&choice);
switch(choice)
{
case 1:
printf("\t\t请输入数据(数字):");
for(i=0;i<5;i++) //修改此处(5)即可改变默认输入数字个数
{
scanf("%d",&x);
ListInsert(&mylist,i,x);
}
break;
.
.
  .
case 6:exit(1);break;
default: printf("\t\t输入错误!\n");
}
}
}
早上一直上课,现在重新看数据结构了,还是顺序表,上述还是顺序表建立,删除,插入的示例程序,我有些疑问的是,在初始化顺序表时,L->size=0.那么按照程序要求,选择1输入节点时,譬如我随便输入几个数,这时执行主函数里的for循环,调用ListInsert(&mylist,i,x)这个函数,i值被作为实参进行传递,但是函数ListInsert中有for(j=L->size;j>i;j--)这个条件,那么j的初值也为0,j>i的条件就不成立啊,或者说任何时候j和i的值都是一样的(因为之前L->size=0),按照道理数据应该无法插入啊。。。
为什么还能运行呢?我之前的分析错误在哪里?

------解决方案--------------------
探讨
引用:
ListInsert函数里
for(j=L->size;j>i;j--)
L->list[j]=L->list[j-1];
作用是将原顺序表第i-1个元素之后的节点依次从后往前移动一个位置,用以空出第i号位置插入新的元素.
初始化后L->size=0;
因此第一次调用ListInsert(&amp;amp;mylist,0,1)
for循……