# 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后,不应该让其后面的元素依次往下退一个吗?是因为新建了一个结点存放此元素直接插入在已有的结点当中,而不是将此元素直接插入某一个结点中吗?