代码找错,很简单。。。。

一个求删除单链表中最大值结点的函数(c语言)
哪里错了呀看了半个小时了。。。。。。。

typedef struct LNode{

ElemType data;
struct LNode* next;

}LinkNode;

void DeleteMax(LinkNode*& L)

{
LinkNode *p=L->next,*pre,*s;

int e = 0;
while(p!=NULL)
{
    pre = p;
    p = p->next ;
    if(p->data>e)
    {
        e = p->data;
        s = pre;
    }
}
s->next = s->next->next;

}

程序没有考虑最后一个节点是最大值的情况。
如果你的链表没有头节点,那么开始也不对。e默认是0,那么如果最大值<=0,程序也不能工作。
另外,你程序别的地方怎么写的,如果没有对next初始化,while(p!=NULL)这里也可能出错。