设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-&