设计算法在带头结点的单链表L中删除数据值最小的结点

//单链表类型定义如下:
typedef struct node {
int data;
struct node *next;
} ListNode;
typedef ListNode *LinkList;

//设计算法在带头结点的单链表L中删除数据值最小的结点(设链表中各结点数据值
均不相同)。函数的原型为:void f34(LinkList L)

void f34(LinkList L)
{

ListNode *q=L, *p = L->next;

if( !p ) return ; //空表

while( p->next ) //找最小值

{

if( p->next->data < q->next->data ) ;
q = p;

p = p->next;

}

p=q->next;

q->next=p->next;

free(p);

}