链表定义
typdef struct Node{
ElemType data;
struct Node *next;
}Node,*LinkList;
1.删除不带头结点的单链表中值为x的结点用递归
void delX(LinkList &L,ElemType x){
Node *p;
if(L==null) return ;
if(L->data==x){
p=L;
L=L->next;
free(p);
delX(L,x);
}
else
delX(L->next,x);
}
2.在带头结点的单链表中删除值为x的结点
void delX(LinkList &L,ElemType x){
Node *p=L->next,*pre=L,*q;
while(p!=null){
if(p->data!=x){
pre=p;
p=p->next;
}
else{
q=p;
p=p->next;
pre->next=p;
free(q);
}
}
}
3.从尾到头反向输出带头结点的单链表每个结点的值
void reversePrint(LinkList &L){
while(L->next!=null)
reversePrint(L->next);
printf(L->data);
}
4.删除带头结点的单链表中最小值的结点(唯一)
LinkList delMinNode(LinkList &L){
Node *pre=L,*p=pre->next;
Node *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;
}
5.将带头结点的单链表就地逆置&#x