不好意思 前面这个发错了
#include <stdio.h>
#include <malloc.h>
#define null 0
#define
error 0
#define
ok 1
typedef struct lnode
{int m;
lnode *next;
}lnode;
void main()
{void creat(lnode *l);
void shuru(lnode *l,int n);
void shanchu(lnode *l,int n);
void charu(lnode *l,int n,int k);
void hebing(lnode*la,lnode*lb,lnode*lc);
void lianjie(lnode*ld,lnode*le);
void shanchuhebing(lnode*la,lnode *lb,int i,int j,int len);
void dayuxiaoyushanchu(lnode *lv,int mink,int mark);
void nixu(lnode *lx);
void shanxiang(lnode *ly);
void jiaochafang(lnode *lm,lnode *ln);
void dizenghebing(lnode *lg,lnode *lh,lnode *lz);
void jiaoji(lnode *ha,lnode *hb,lnode *hc);
lnode *head,*la,*v,*lb,*lc,*ld,*le,*lv,*lx,*ly,*lm,*ln,*lf,*lz,*lg,*lh,*ha,*hb,*hc;
int n,i,k,l,len,mink,mark,j;
head=(lnode*)malloc(sizeof(lnode));
head->next=null;
la=(lnode*)malloc(sizeof(lnode));
la->next=null;
lb=(lnode*)malloc(sizeof(lnode));
lb->next=null;
le=(lnode*)malloc(sizeof(lnode));
le->next=null;
ld=(lnode*)malloc(sizeof(lnode));
ld->next=null;
lv=(lnode*)malloc(sizeof(lnode));
lv->next=null;
lx=(lnode*)malloc(sizeof(lnode));
lx->next=null;
ly=(lnode*)malloc(sizeof(lnode));
ly->next=null;
lm=(lnode*)malloc(sizeof(lnode));
lm->next=null;
ln=(lnode*)malloc(sizeof(lnode));
ln->next=null;
lg=(lnode*)malloc(sizeof(lnode));
lg->next=null;
lh=(lnode*)malloc(sizeof(lnode));
lh->next=null;
lz=(lnode*)malloc(sizeof(lnode));
lz->next=null;
ha=(lnode*)malloc(sizeof(lnode));
ha->next=null;
hb=(lnode*)malloc(sizeof(lnode));
hb->next=null;
hc=(lnode*)malloc(sizeof(lnode));
hc->next=null;
lc=la;
printf("输入部分:\n\n");
printf("请输入几位数字:\n");
scanf("%d",&n);
for(i=0;i<n;i++)
creat(head);
/*创建头列表*/
shuru(head,n);
/*列表负值*/
v=head->next;
while(v!=null)
{printf("%d",v->m);
v=v->next;}
printf("\n\n\n\n");
printf("删除部分:\n\n");
printf("输入要删除的位置\n");
scanf("%d",&n);
shanchu(head, n);
v=head->next;
while(v!=null)
{printf("%d",v->m);
v=v->next;}
printf("\n\n\n\n");
printf("插入部分:\n\n");
printf("输入要插入的位置\n");
scanf("%d",&n);
printf("输入要插入的数\n");
scanf("%d",&k);
charu(head,n,k);
v=head->next;
while(v!=null)
{printf("%d",v->m);
v=v->next;}
printf("\n\n\n\n");
printf("将la,lb按非递减放入lc:\n\n");
/*2个表合并部分*/
printf("请输入la几位数字\n");
scanf("%d",&n);
printf("请输入la数字:\n");
for(i=0;i<n;i++)
creat(la);
/*创建头列表*/
shuru(la,n);
/*列表负值*/
printf("\n\n");
printf("请输入lb几位数字:\n");
scanf("%d",&n);
printf("请输入lb数字\n");
for(i=0;i<n;i++)
creat(lb);
/*创建头列表*/
shuru(lb,n);
/*列表负值*/
hebing(la,lb,lc);
lc=lc->next;
while(lc!=null)
{printf("%d",lc->m);
lc=lc->next;}
printf("将ld,le连接\n\n");
/*将ld,le连接*/
printf("请输入ld几位数字:\n");
scanf("%d",&n);
printf("请输入ld数字\n");
for(i=0;i<n;i++)
creat(ld);
/*创建头列表*/
shuru(ld,n);
printf("\n\n");
printf("请输入ld几位数字:\n");
scanf("%d",&n);
printf("请输入ld数字\n");
for(i=0;i<n;i++)
creat(le);
/*创建头列表*/
shuru(le,n);
printf("\n\n");
lianjie(ld,le);
ld=ld->next;
while(ld!=null)
{printf("%d",ld->m);
ld=ld->next;}
printf("\n\n");
printf("从la中删除元素插入到lb\n");
/*从la中删除元素插入到lb*/
printf("请输入la几位数字\n");
scanf("%d",&n);
printf("请输入la数字:\n");
for(i=0;i<n;i++)
creat(la);
/*创建头列表*/
shuru(la,n);
/*列表负值*/
printf("\n\n");
printf("请输入lb几位数字:\n");
scanf("%d",&n);
printf("请输入lb数字\n");
for(i=0;i<n;i++)
creat(lb);
/*创建头列表*/
shuru(lb,n);
/*列表负值*/
printf("请输入la要删除的第i个位置:\n");
scanf("%d",&i);
printf("请输入la要删除的len个元素:\n");
scanf("%d",&len);
printf("请输入lb要插入的第j个位置:\n");
scanf("%d",&j);
shanchuhebing(la,lb,i,j,len);
la=la->next;
lb=lb->next;
printf("la:");
while(la!=null)
{printf("%d",la->m);
la=la->next;}
printf("\n");
printf("lb:");
while(lb!=null)
{printf("%d",lb->m);
lb=lb->next;}
printf("\n\n");
printf("删除大于mink小于maxk的元素部分:\n"); /*删除大于mink小于maxk的元素部分*/
printf("请输入lv几位数字:\n");
scanf("%d",&n);
printf("请输入lv数字\n");
for(i=0;i<n;i++)
creat(lv);
/*创建头列表*/
shuru(lv,n);
/*列表负值*/
printf("请输入大于mink的数:\n");
scanf("%d",&mink);
printf("请输入小于mark的数:\n");
scanf("%d",&mark);
dayuxiaoyushanchu(lv,mink,mark);
lv=lv->next;
printf("lv:");
while(lv!=null)
{printf("%d",lv->m);
lv=lv->next;}
printf("\n\n");
printf("对单链表的逆置部分:\n"); /*对单链表的逆置部分*/
printf("请输入lx几位数字\n");
scanf("%d",&n);
printf("请输入lx数字:\n");
for(i=0;i<n;i++)
creat(lx);
/*创建头列表*/
shuru(lx,n);
nixu(lx);
lx=lx->next;
while(lx!=null)
{printf("%d",lx->m);
lx=lx->next;}
printf("\n\n");
printf("删除相同元素部分:\n");
/*删除相同元素部分:*/
printf("请输入ly几位数字\n");
scanf("%d",&n);
printf("请输入ly数字:\n");
for(i=0;i<n;i++)
creat(ly);
/*创建头列表*/
shuru(ly,n);
shanxiang(ly);
printf("交叉放入部分:\n\n");
/*交叉放入部分:*/
printf("请输入lm几位数字:\n");
scanf("%d",&n);
printf("请输入lm数字\n");
for(i=0;i<n;i++)
creat(lm);
/*创建头列表*/
shuru(lm,n);
/*列表负值*/
printf("请输入ln几位数字:\n");
scanf("%d",&n);
printf("请输入ln数字\n");
for(i=0;i<n;i++)
creat(ln);
/*创建头列表*/
shuru(ln,n);
/*列表负值*/
jiaochafang(lm,ln);
lf=lm;
lf=lf->next;
while(lf!=null)
{printf("%d",lf->m);
lf=lf->next;}
printf("\n\n");
printf("两个递增链表合并成一个递减链表部分:\n"); /*两个递增链表合并成一个递减链表部分:*/
printf("请输入lg几位数字\n");
scanf("%d",&n);
printf("请输入lg数字:\n");
for(i=0;i<n;i++)
creat(lg);
/*创建头列表*/
shuru(lg,n);
/*列表负值*/
printf("\n\n");
printf("请输入lh几位数字\n");
scanf("%d",&n);
printf("请输入lh数字:\n");
for(i=0;i<n;i++)
creat(lh);
/*创建头列表*/
shuru(lh,n);
/*列表负值*/
printf("\n\n");
dizenghebing(lg,lh,lz);
lz=lz->next;
while(lz!=null)
{printf("%d",lz->m);
lz=lz->next;}
printf("\n\n");
printf("求2个表ha,hb的交集部分:\n");
/*求2个表ha,hb的交集部分*/
printf("请输入ha几位数字:\n");
scanf("%d",&n);
printf("请输入ha数字\n");
for(i=0;i<n;i++)
creat(ha);
/*创建头列表*/
shuru(ha,n);
printf("请输入hb几位数字:\n");
scanf("%d",&n);
printf("请输入hb数字\n");
for(i=0;i<n;i++)
creat(hb);
/*创建头列表*/
shuru(hb,n);
jiaoji(ha,hb,hc);
hc=hc->next;
while(hc!=null)
{printf("%d",hc->m);
hc=hc->next;}
printf("\n\n");
}
void creat(lnode *l)
/*创建头列表*/
{lnode *k;
k=(lnode*)malloc(sizeof(lnode));
k->next=l->next;
l->next=k;}
void shuru(lnode *l,int n)
/*列表负值*/
{int i;
lnode *p;
p=l->next;
for(i=0;i<n;i++)
{
scanf("%d",&p->m);
p=p->next;}}
void shanchu(lnode *l,int n) /*删除列表某个数*/
{lnode *p,*q,*h;
int i;
p=l->next;
q=l;
for(i=1;i<n;i++)
{p=p->next;q=q->next;}
h=p;p=p->next;free(h);
q->next=p;}
void charu(lnode *l,int n,int k)/*插入列表某个数*/
{lnode *p,*v,*q;
int i;
p=l->next;
q=l;
v=(lnode*)malloc(sizeof(lnode));
v->m=k;
for(i=1;i<n;i++)
{p=p->next;q=q->next;}
q->next=v;
v->next=p;}
void hebing(lnode*la,lnode*lb,lnode*lc)/*2个表合并部分*/
{lnode *p1,*p2,*p3;
p1=la->next;
p2=lb->next;
if(p1->m<p2->m)
{lc->next=p1;p3=p1;p1=p1->next;}
else {lc->next=p2;p3=p2;p2=p2->next;}
while(p1!=null&&p2!=null)
{if(p1->m<p2->m)
{p3->next=p1;p3=p3->next;p1=p1->next;}
else if(p1->m==p2->m) {p3->next=p1;p1=p1->next;p2=p2->next;}
else
{p3->next=p2;p3=p3->next;p2=p2->next;}}
if(p1!=null)
p3->next=p1;
else p3->next=p2;}
void lianjie(lnode*ld,lnode*le)
/*将ld,le连接*/
{lnode *p,*q;
p=ld->next;
q=ld;
while(p!=null)
{p=p->next;q=q->next;}
q->next=le->next;}
void shanchuhebing(lnode*la,lnode *lb,int i,int j,int len) /*从la中删除元素插入到lb*/
{lnode *p,*q,*l,*m,*v;
int n;
p=la->next;
q=la;
m=lb->next;
v=lb;
for(n=1;n<i;n++)
{p=p->next;q=q->next;}
l=p;
for(n=1;n<len;n++)
p=p->next;
q->next=p->next;
for(n=1;n<j;n++)
{m=m->next;v=v->next;}
v->next=l;
p->next=m;}
void dayuxiaoyushanchu(lnode *lv,int mink,int mark)
/*删除大于mink小于maxk的元素部分*/
{lnode *p,*q,*h;
p=lv->next;
q=lv;
while(p->m<=mink)
{p=p->next;q=q->next;}
h=p;
while(p->m<mark)
{p=p->next;free(h);h=p;}
q->next=p;}
void nixu(lnode *lx)
/*对单链表的逆置部分*/
{lnode *p,*q,*l;
p=lx->next;
q=lx->next->next;
p->next=null;
while(q!=null)
{l=q;
q=q->next;
l->next=p;
p=l;}
lx->next=p;
}
void shanxiang(lnode *ly)
/*删除相同元素部分:*/
{lnode *p,*q,*h;
p=ly->next;
q=ly->next->next;
while(q->next)
{while(p->m==q->m&&q->next) {p->next=q->next;h=q;q=q->next;free(h);}
if(q->next==null) break;
else{p=p->next;q=q->next;}
}
if(p->m==q->m)
p->next=null;
ly=ly->next;
while(ly!=null)
{printf("%d",ly->m);
ly=ly->next;}}
void jiaochafang(lnode *lm,lnode *ln)
/*交叉放入部分:*/
{lnode *p,*q,*m,*n;
p=lm->next;
q=ln->next;
while(p!=null&&q!=null)
{m=p;p=p->next;m->next=q;n=q;q=q->next;n->next=p;}
if(p==null)
n->next=q;
else
m->next=p;}
void dizenghebing(lnode *lg,lnode *lh,lnode *lz)
/*两个递增链表合并成一个递减链表部分:*/
{lnode *p,*q,*m,*n,*h;
p=lg->next;
q=lh->next;
if(p->m<q->m)
{h=p;p=p->next; h->next=null;}
else {h=q;q=q->next; h->next=null;}
while(p!=null&&q!=null)
{if(p->m<q->m) {m=p->next;p->next=h;h=p;p=m;}
else {n=q->next;q->next=h;h=q;q=n;}}
while(p!=null)
{m=p->next;p->next=h;h=p;p=m;}
while(q!=null)
{n=q->next;q->next=h;h=q;q=n;}
lz->next=h;
}
void jiaoji(lnode *ha,lnode *hb,lnode *hc) /*求2个表ha,hb的交集部分*/
{lnode *p,*q,*m,*n;
p=ha->next;
q=hb->next;
n=hc;
while(p!=null&&q!=null)
{if(p->m==q->m)
{m=(lnode*)malloc(sizeof(lnode));
m->next=null;
n->next=m;
n=n->next;
n->m=p->m;
p=p->next;
q=q->next;}
else if(p->m<q->m) p=p->next;
else
q=q->next;}
}
少了一大半