# 1. void CreateListR(LinkNode *&L, ElemType a[], int n)
1 { LinkNode *s, *r;
2 L = (LinkNode * )malloc(sizeof(LinkNode));
3 r =L;
4 for(int i = 0; i < n; i ++)
5 { s = (LinkNode * )malloc(sizeof(LinkNode));
6 s -> data = a[i];
7 r -> next = s;
8 r = s;
9 }
10 r -> next = NULL;
11 }//尾插法建表
## 2.
4--9行,尾插法不是应该从最后开始一个一个的往前插入数据么,为什么for循环还是从i=0开始,然后一个一个的按顺序往后插入?
# 2. bool ListInsert(LinkNode *&L, int i, ElemType e)
1 { int j=0;
2 LinkNode * p = L, * s;
3 if(i<=0) return false;
4 while(j<i-1&&p!=NULL)
5 { j++;
6 p = p -> next;
7 }
8 if(p == NULL) return false;
9 else
10 { s = (LinkNode * )malloc(sizeof(LinkNode));
11 s -> data = e;
12 s -> next = p -> next;
13 p -> next = s;
14 return true;
15 }
16 }//插入数据元素
## 2.2
第6行,为什么要让p指向下一个结点?
插入一个元素e后,不应该让其后面的元素依次往下退一个吗?是因为新建了一个结点存放此元素直接插入在已有的结点当中,而不是将此元素直接插入某一个结点中吗?