一个求删除单链表中最大值结点的函数(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)这里也可能出错。