在带头结点的单向链表L={a1,a2,...an}中,试设计一个算法,将单链表中值最小的那个结点删除(假定链表中的数据元素值均不相同)。

#include<stdio.h>

#include<stdlib.h>

typedef struct Lnode   //定义链表

{

int data;

struct Lnode *next;

}Lnode,*Linklist;

void createfifo(Linklist &L,int n)  //创建先进先出函数

{

int i;

Linklist p,q;

L=(Linklist)malloc(sizeof(Lnode));

q=L;

for(i=0;i<n;i++)

{

p=(Linklist)malloc(sizeof(Lnode));

scanf("%d",&p->data);

q->next=p;

q=p;

}

q->next=NULL;

}

void print(Linklist L)

{

Linklist p;

p=L->next;

while(p)

{

printf("%d ",p->data);

p=p->next;

}

}

void deletemin(Linklist &L)    //删除最小结点函数

{

Linklist p,q,m=L->next;

int e=110000;

while(m)

{

        if(m->data<e){e=m->data;}

        m=m->next;

 }

 p=L;

 q=L->next;

 while(q)

 {

          if(q->data==e)

        {

                p->next=q->next;

                break;

        }

        p=q;

        q=q->next;

   }

}

void main()     //主函数

{

Linklist L;

int n,e;

printf("请输入链表的元素个数:\n");

scanf("%d",&n);

printf("请输入%d个元素:\n",n);

createfifo(L,n);

deletemin(L);

printf("删除最小值后的链表为:\n");

print(L);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值