//链表操作:
#include
#include
typedef struct pNode{
int data;
struct pNode *next;
}*linklist,node;
void creat(linklist &la,int n)
{
linklist p,pre;
la=(linklist)malloc(sizeof(node));
pre=la;
for(int i=0;idata);
pre->next=p;
pre=p;
}
pre->next=NULL;
}
void traverse(linklist &la)
{
linklist p;
p=la->next;
printf("输出这一组数:\n");
while(p)
{
printf("%5d",p->data);
p=p->next;
}
printf("\n\n");
}
void insert(linklist &L,int i,int e)
{
linklist p,q;
int j=0;
printf("请输入要插入的位置:\n");
scanf("%d",&i);
printf("请输入要插入的元素:\n");
scanf("%d",&e);
q=(linklist)malloc(sizeof(node));
q->data=e;
p=L;
while(p->next&&jnext;
j++;
}
if(!p->next||j>i-1)
exit(0);
q->next=p->next;
p->next=q;
}
void listdelete(linklist &L,int i,int &e)
{
linklist p,q,r;
p=L;
int j=0;
printf("请输入要删除的位置:\n");
scanf("%d",&i);
while(p->next&&jnext;
j++;
}
if(!p->next||j>i-1)
exit(0);
q=p->next;
e=q->data;
p->next=q->next;
r=q;
free(r);
printf("所删除的元素为:%d\n\n",e);
}
void merger(linklist la,linklist lb,linklist &lc)
{
linklist pa,pb,pc;
pa=la->next;pb=lb->next;lc=pc=la;
while(pa&&pb)
{
if(pa->datadata)
{
pc->next=pa;
pc=pa;
pa=pa->next;
}
else if(pa->data>pb->data)
{
pc->next=pb;
pc=pb;
pb=pb->next;
}
else
{
pc->next=pa;pc=pa;pa=pa->next;pb=pb->next;
}
}
if(pa)
pc->next=pa;
if(pb)
pc->next=pb;
}
int main()
{
linklist L,la,lb,lc;
int x,e,i,n,m,j,k;
/*- printf("输入元素个数:\n");
scanf("%d",&x);
printf("请输入%d个元素:\n",x);
creat(L,x);
traverse(L);
insert(L,i,e);
traverse(L);
listdelete(L,n,m);
traverse(L);*/
printf("输入la链表元素个数:\n");
scanf("%d",&j);
printf("请输入%d个元素:\n",j);
creat(lb,j);
printf("输入lb链表元素个数:\n");
scanf("%d",&k);
printf("请输入%d个元素:\n",k);
creat(la,k);
merger(la,lb,lc);
traverse(lc);
return 0;
}