线性表用c语言程序表示,请求高手指教,这是一道用线性表的顺序表示和实现的C语言程序题: 已知,集合A=(3,5);B=(2,6,8)集合A...

满意答案

02ae427d08e371d7e90d5b995e828d6d.png

asy7xi99

2013.11.27

02ae427d08e371d7e90d5b995e828d6d.png

采纳率:58%    等级:12

已帮助:4408人

#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);

}

00分享举报

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值