经典例题9

本文介绍了C语言中关于链表的一些经典操作,包括从尾到头反向输出链表节点值、删除单链表中的最小值节点、就地逆置链表的两种方法以及如何对链表进行排序。提供了详细的算法实现,并解释了每个操作的逻辑步骤。
摘要由CSDN通过智能技术生成

设L为带头结点的单链表, 编写算法实现从尾到头反向输出每个结点的值
void Print(LinkList L)
{
if(L->next!=NULL)
{
Print(L->next);
}
printf("%d ",L->data);
}

试编写在带头结点的单链表L中删除一个最小值结点的高效算法(假设最小值结点是唯一的).
LinkList Delete(LinkList &L)
{
LNode *pre=L,p=L->next,*r;
LNode *minpre=pre,*minp=L->next;//保存最小值和他的前驱
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;
}

试编写算法将带头结点的单链表就地逆置(所谓“就地” 是指辅助空间复杂度为O(1))
方法1
LinkList Reserve(LinkList &L)
{
LNode *p=L,*r=L->next;
L-&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值