试编写在带头结点的单链表中删除(一个)最小值结点的(高效)算法。void delete(Linklist &L)
输入
输入一个整数n,代表单链表的长度。
再输入n个整数,代表每个结点的值。
输出
输出删除后的单链表的值。
输入样例 1
5 6 7 4 1 5
输出样例 1
6 7 4 5
解题思路:在链表输入时逐个比对找出最小值,然后再删除该结点
#includeusing namespace std; typedef struct lnode{ int date; struct lnode * next; }lnode,*linklist; void initlist(linklist &l,int n,int &min){ linklist r,p; int e,i=1; l=new lnode; l->next=NULL; r=l; p=r->next; for(;i<=n;i++){ p=new lnode; p->next=NULL; cin>>e; p->date=e; r->next=p; r=p; p=r->next; if(i==1){ min=e; } else{ if(min>e) min=e; } } } void deletemin(linklist &l,int n,int min){ linklist r,p; r=l; p=r->next; for(int i=1;i<=n;i++){ if(p->date==min){ p=p->next; r->next=p; break; } else{ r=p; p=r->next; } } } void put(linklist l){ linklist r; r=l; r=r->next; while(r){ cout< date<<" "; r=r->next; } } int main(){ linklist l; int n,min; cin>>n; initlist(l,n,min); deletemin(l,n,min); put(l); }



