请求高手指教,这是一道用线性表的顺序表示和实现的C语言程序题: 已知,集合A=(3,5);B=(2,6,8)集合A
展开全部
#include"stdio.h"
#include"stdlib.h"
typedef struct lnode
{
int data;
struct lnode *next;
}lnode,*linklist;
struct lnode * createlist_la(int n)
{
int i;
struct lnode *pa,*la,*qa;
la=(linklist)malloc(sizeof(lnode));
la->next=NULL;
qa=la;
for(i=n;i>0;i--)
{
pa=(linklist)malloc(sizeof(lnode));
scanf("%d",&pa->data);
pa->next=qa->next;
qa->next=pa;
qa=pa;
}
pa=la->next ;
while(pa)
{
printf("%3d",pa->data);
pa=pa->next;
}
return la;
}
struct lnode * createlist_lb(int m)
{
int i;
struct lnode *pb,*qb,*lb;
lb=(linklist)malloc(sizeof(lnode));
lb->next=NULL;
qb=lb;
for(i=1;i<=m;i++)
{
pb=(linklist)malloc(sizeof(lnode));
scanf("%d",&pb->data);
pb->next=qb->next ;
qb->next=pb;
qb=pb;
}
pb=lb->next;
while(pb)
{
printf("%3d",pb->data);
pb=pb->next;
}
return lb;
}
struct lnode * mergelist_lc(struct lnode *la,struct lnode *lb)
{
struct lnode *pc,*pa,*pb,*lc;
lc=la;
pc=la;
pa=la->next;
pb=lb->next ;
while(pa&&pb)
{
if((pa->data)>(pb->data) )
{
pc->next =pb;
pc=pb;
pb=pb->next;
}
else
{
pc->next=pa;
pc=pa;
pa=pa->next ;
}
}
if(pa==NULL) pc->next =pb;
else pc->next =pa;
free (lb);
pc=lc->next;
while(pc)
{
printf("%4d",pc->data );
pc=pc->next ;
}
return lc;
}
struct lnode * listdelete_lc(struct lnode *pc3,int y)
{
struct lnode *pc4,*pc5;
pc4=pc3 ;
while(pc4&&((pc4->next->data )!=y))
pc4=pc4->next ;
pc5=pc4->next;
pc4->next=pc5->next;
free(pc5);
pc4=pc3->next ;
while(pc4)
{
printf("%3d",pc4->data );
pc4=pc4->next;
}
printf("\n");
return pc3;
}
void main()
{
int n,m,y;
struct lnode *a,*b,*c,*c1,*c2;
printf("请输入A表的数值个数 n:\n");
scanf("%d",&n);
printf("请输入A表的数值:");
printf("\n");
a=createlist_la(n);
printf("\n");
printf("请输入B表的数值个数 m:\n");
scanf("%d",&m);
printf("请输入B表的数值:");
printf("\n");
b=createlist_lb(m);
printf("\n");
c=mergelist_lc(a,b);
printf("\n");
printf("输入将要删除的数 y:");
printf("\n");
scanf("%d",&y);
c2=listdelete_lc(c,y);
}
#include"stdlib.h"
typedef struct lnode
{
int data;
struct lnode *next;
}lnode,*linklist;
struct lnode * createlist_la(int n)
{
int i;
struct lnode *pa,*la,*qa;
la=(linklist)malloc(sizeof(lnode));
la->next=NULL;
qa=la;
for(i=n;i>0;i--)
{
pa=(linklist)malloc(sizeof(lnode));
scanf("%d",&pa->data);
pa->next=qa->next;
qa->next=pa;
qa=pa;
}
pa=la->next ;
while(pa)
{
printf("%3d",pa->data);
pa=pa->next;
}
return la;
}
struct lnode * createlist_lb(int m)
{
int i;
struct lnode *pb,*qb,*lb;
lb=(linklist)malloc(sizeof(lnode));
lb->next=NULL;
qb=lb;
for(i=1;i<=m;i++)
{
pb=(linklist)malloc(sizeof(lnode));
scanf("%d",&pb->data);
pb->next=qb->next ;
qb->next=pb;
qb=pb;
}
pb=lb->next;
while(pb)
{
printf("%3d",pb->data);
pb=pb->next;
}
return lb;
}
struct lnode * mergelist_lc(struct lnode *la,struct lnode *lb)
{
struct lnode *pc,*pa,*pb,*lc;
lc=la;
pc=la;
pa=la->next;
pb=lb->next ;
while(pa&&pb)
{
if((pa->data)>(pb->data) )
{
pc->next =pb;
pc=pb;
pb=pb->next;
}
else
{
pc->next=pa;
pc=pa;
pa=pa->next ;
}
}
if(pa==NULL) pc->next =pb;
else pc->next =pa;
free (lb);
pc=lc->next;
while(pc)
{
printf("%4d",pc->data );
pc=pc->next ;
}
return lc;
}
struct lnode * listdelete_lc(struct lnode *pc3,int y)
{
struct lnode *pc4,*pc5;
pc4=pc3 ;
while(pc4&&((pc4->next->data )!=y))
pc4=pc4->next ;
pc5=pc4->next;
pc4->next=pc5->next;
free(pc5);
pc4=pc3->next ;
while(pc4)
{
printf("%3d",pc4->data );
pc4=pc4->next;
}
printf("\n");
return pc3;
}
void main()
{
int n,m,y;
struct lnode *a,*b,*c,*c1,*c2;
printf("请输入A表的数值个数 n:\n");
scanf("%d",&n);
printf("请输入A表的数值:");
printf("\n");
a=createlist_la(n);
printf("\n");
printf("请输入B表的数值个数 m:\n");
scanf("%d",&m);
printf("请输入B表的数值:");
printf("\n");
b=createlist_lb(m);
printf("\n");
c=mergelist_lc(a,b);
printf("\n");
printf("输入将要删除的数 y:");
printf("\n");
scanf("%d",&y);
c2=listdelete_lc(c,y);
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
实在没看懂你想要实现什么东东
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询