1. 删除不带头节点单链表中的x元素
vold Delete(Linklist &L,ElemType x)
{
LNode *p;
if(L==NULL);
return;
if(L->data==x)
{
p=L;
L=L->next;
free(p);
Delete(L,x);
}
else{
Delete(L->next,x);
}
}
2. 删除带头节点单链表中的x元素
void Delete_x(Linklist &L,ElemType x)
{
LNode *p=L->next,*pre=L,*q;
while(p!=NULL){
if(p->data==x)
{
q=p;
p=p->next;
pre->next=p;
free(p);
}
else{
pre=p;
p=p->next;
}
}
}
3. 反向输出(带头结点)
void R_Print(LinkList L)
{
if(L->next!=NULL){
R_Print(L->next);
}
if(L!=NULL) print(L->data);
}
4. 删除唯一的最小值(带头结点)
LinkList Delete_Min(LinkList &L){
LNode *pre=L,*p=pre->next;
LNode *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. 顺序递增(带头结点)
void Sort(LinkList &L){
LNode *p=L->next,*pre;
LNode *r=p->next;
p->next=NULL;
p=r;
while(p!=NULL){
r=p->next;
pre=L;
while(pre->next!=NULL&&pre->next->data<p->data)
pre=pre->next;
p->next=pre->next;
pre->next=p;
p=r;
}
}
|