一、链表冒泡排序
- 交换指针的冒泡排序
先来看看图示,该图只演示了一次交换。
Node* Sort(Node* pHead)
{
Node *p,*q;
int n,i,j;
p=pHead;
while(p)
{
n++;
p=p->next;
}
for(i=0;i<n-2;i++)
{
p=pHead;
q=p->next;
for(j=0;j<n-i-2;j++)
{
if(q->date>(q->next->date))
{
p->next=q->next;
q->next=q->next->next;
p->next->next=q;
}
p=p->next;
q=p->next;
}
}
return pHead;
}
- 交换数据的冒泡排序
这种方法与普通的数组冒泡排序没有什么区别,在这里就不作展示了。
二、删除a链中b链出现的节点
- 思路:让a链第一个元素和b链中的元素比较若有重复删除,若没有更新a链标记位置,再次遍历b链表,如此重复直到a链尾。
Node *Delete(Node *ah,Node *bh)
{
Node *a,*b,*c,*t;
a=ah->next;
c=ah;
while(a!=NULL)
{
b=bh->next;
while(b!=NULL)
{
if(a->date==b->date)
{
t=a;
c->next=a->next;
a=c;
free(t);
}
b=b->next;
}
c=a;
a=a->next;
}
return ah;
}