删除单链表L中一个最小值结点的高校算法(假设最小值结点是唯一的)
#include <iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
typedef struct LNode
{
int data;
struct LNode *next;
} LNode,*LinkList;
LinkList Delete_Min(LinkList &L)
{
LNode *pre=L,*p= pre->next; //p 为工作指针,pre指向其前驱
LNode *minpre=pre,*minp=p; //保存最小值结点及其前驱
while(p!=NULL)
{
if(p->data<minp->data)
{
minp=p;
minpre=pre;
}
pre=p; //继续扫描下一个结点
p=p->next; //删除最小值结点
}
minpre->next=minp->next; //删除最小值结点
free(minp);
return L;
}
int main()
{
return 0;
}