选择适当的数据结构存储关系矩阵,用C语言编程实现:A上的两个二元关 20
2个回答
展开全部
1“ab中内容按增序排列”体现在输入上,比如A:12345就不要给自己找麻烦写成54321,不然还得排序;⑴.因为是增序,所以用指针遍历A、B链表,每次获取较小值加入C,注意重复筛选,可以在插入时多判断一下,也可以在最后遍历一次C表。⑵.以A表为主,每移动一次A表指针都要遍历一次B表至其表尾或(A->datadata)即此时B的值已经大于A。最后就是主函数中提供输入A、B表的提示语,还有3次printf。下面提供一个我写过的类似代码,忘记是什么题目了,好像就是(1)。#include#include/*链表节点定义*/typedefstructnode{intdata;structnode*next;}node;node*head1,*head2,*Head;/*链表节点创建*/voidinitiatesl(node**h){*h=(node*)malloc(sizeof(node));(*h)->next=NULL;}/*根据给定表长生成基础表1、2*/voidcreate_list(node*h,inti){intn=0;node*p,*q=h;for(;nnext=p;scanf("%d",&q->next->data);q=q->next;}}/*链表合成*/voidmerge(node*H,node*h1,node*h2){node*p=h1->next,*q=h2->next,*r=H,*s=H;for(;p!=NULL&&q!=NULL;r=r->next){initiatesl(&r->next);if(p->datadata){r->next->data=p->data;p=p->next;}elseif(p->data>q->data){r->next->data=q->data;q=q->next;}else{r->next->data=p->data;p=p->next;q=q->next;}}if(p==NULL)for(;q!=NULL;q=q->next,r=r->next){initiatesl(&r->next);r->next->data=q->data;}elsefor(;p!=NULL;p=p->next,r=r->next){initiatesl(&r->next);r->data=p->data;}}/*主函数及交互界面*/intmain(void){inta,b;node*s,*S=head1;initiatesl(&head1);/*创建三个头结点*/initiatesl(&head2);initiatesl(&Head);printf("Pleaseinputthelengthofthetwolist.(a,b)\n");/*给定长度输入样式*/scanf("%d,%d",&a,&b);printf("Inputlistone:");/*创建链表1、2*/create_list(head1,a);printf("Inputlisttwo:");create_list(head2,b);merge(Head,head1,head2);s=Head->next;printf("L:");for(;s!=NULL;s=s->next)printf("%d",s->data);printf("\n");return0;}
追问
大哥,确定这是我提问的问题吗…
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询