请问此程序能否将新的元素插入在单链表的最后一个元素后面,并解释原理

int InsList(LinkList L, int i, ElemType e)
{ Node *pre, *s;

if (i<1)  return ERROR;
pre=( (i==1) ? L : Get(L,i-1) );  // 找插入位置的前驱
if (pre==NULL)
    { printf(";插入位置不合理!";);  return ERROR; }
s=(Node *)malloc(sizeof(Node));
s->data=e;  s->next=pre->next;  pre->next=s;
return OK;

}

可以,链表关系如下,其中蓝色箭头表示的是指针,黑色方块表示链表节点,每个节点由数据data和指向下一个节点的指针next构成,假设pre的下一个节点叫t,s=(Node *)malloc(sizeof(Node));s->data=e;,是创建一个指针s,指向存放着e数据的节点,也就是说s就是要插入的节点

img

s->next=pre->next; pre->next=s表示的就是把s的下一个指向pre的下一个,也就是t,然后把pre的下一个指向s

img

这样就完成了s的插入