链表定义
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;

这篇博客详细介绍了链表的各种操作,包括删除特定值的结点、链表的反向输出、删除最小值结点、链表的逆置、元素递增排序、删除指定范围结点、寻找公共结点、合并和去除重复元素等。通过这些操作,深入理解链表数据结构及其在实际问题中的应用。

4070

被折叠的 条评论
为什么被折叠?



