二叉排序树
typedef struct node{
int data;
struct node *lchild,*rchild;
}bitree;
void bstinsert(bitree *&bt,int key){
if(bt==0){
bt=(bitree*)malloc(sizeof(bitree));
bt->key=key;
bt->lchild=bt->rchild=0;
}
else if(bt->key>key){
bstinsert(bt->lchild,key);
}
else
{
bstinsert(bt->rchild,key);
}
}
void createbsttree(bitree *&bt){
int i;
for(i=1;i<=n;i++){
bstinsert(bt,random(100));
}
}
void split(lklist *head,lklist *&ha,lklist *&hb,lklist *&hc){
lklist *p;
ha=hb=hc=0;
for(p=head;p!=0;p=head){
head=p->next;
p->next=0;
if(p->data>='A'&&p->data<='Z')
p->next=ha;ha=p;
else if(p->data>='0'&&p->data<='9')
p->next=hb;hb=p;
else
p->next=hc;hc=p;
}
}
int judge(bitree *bt1,bitree *bt2){
if(bt1==0 && bt2==0) return 1;
else if(bt1==0 || bt2==0 || bt1->data!=bt2->data);
else return judge(bt1->lchild)*judge(bt2->rchild);
}
有序单链表合并
void merge(lklist *ha,lklist *hb,lklist *&hc){
lklist *s=hc=0;
while(ha!=0 &&hb!=0){
if(ha->data<hb->data)
if(s==0) hc=s=ha;
else s->next=ha;s=ha;
ha=ha->next;
else
if(s==0) hc=s=hb;
else s->next=hb;s=hb;
hb=hb->next;
}
}