c数据结构单链表的操作

Status ListDelete(LinkList *L,int i,ElmeType *e)
{
int j;
LinkList p;

p = *L;
j = 1;
while(p&&j<i)
{
    p = p->next;//p为第i个位置的next元素;
    j++;
}
if(!p&&j>i-1) return ERROR;
q = p->next;
free(q);   
p->next = p->next->next;//使p为第i+1位置的next元素;

return OK;

}
你们p既然已经为i+1的next,那为什么要释放第i个节点的内存空间,可以不用free释放节点吗?我感觉不释放的话对链表没有影响啊。
类似的增加新节点用malloc(sizeof(Node))可以不用malloc吗?他可以自动开辟一块内存空间吗?讲的详细点谢谢。

对链表没什么影响,可是他还是会占着内存啊,用的多了就会内存溢出啊,

没人理我吗?哪怕是随便说一下

q你在哪声明的我怎么没看见?