跪求编程大神帮我解答下此题~高分悬赏~在线等~急!!

用c语言... 用c语言 展开
 我来答
水里风
推荐于2016-03-14 · TA获得超过1528个赞
知道小有建树答主
回答量:1294
采纳率:80%
帮助的人:524万
展开全部
有点偷懒写的,不知道符不符合要求

#include<stdio.h>
#define NULL 0

typedef struct Pnode//定义节点
{
int key;
Pnode *next;
}P;

P a,b,c;//三个链表的头结点

void init()//a,b链表初始化
{
P *p;
char c='a';
p=&a;
printf("请输入第一个链表数据,数字之间空格间隔(例:2 3 4):\n");
while(c!='\n')
{
scanf("%d",&p->key);
c=getchar();
p->next=new P;
p=p->next;
}
p->next=NULL;
c='a';
p=&b;
printf("请输入第二个链表数据,数字之间空格间隔(例:4 5 6):\n");
while(c!='\n')
{
scanf("%d",&p->key);
c=getchar();
p->next=new P;
p=p->next;
}
p->next=NULL;
}

void fanzhuan(P *head)//链表翻转,成为降序(非升)
{
P *p,*q;
int temp;
q=head;
while(q->next!=NULL)
{
p=q;
while(p->next!=NULL)
{
if(p->key>q->key)
{
temp=p->key;
p->key=q->key;
q->key=temp;
}
p=p->next;
}
q=q->next;
}
}

void hebing(P *a,P *b)//链表合并再翻转
{
P *p,*r;
int temp;
r=&c;
p=a;
while(p->next!=NULL)
{
r->key=p->key;
r->next=new P;
r=r->next;
p=p->next;
}
p=b;
while(p->next!=NULL)
{
r->key=p->key;
r->next=new P;
r=r->next;
p=p->next;
}
r->next=NULL;
r=&c;
fanzhuan(r);
}

void display(P *p)
{
P *q;
q=p;
while(q->next!=NULL)
{
printf("%d ",q->key);
q=q->next;
}
printf("\n");
}

int main()
{
init();
P *p,*q;
p=&a;
fanzhuan(p);
printf("\n链表一反转后为:");
display(p);
p=&b;
fanzhuan(p);
printf("链表二反转后为:");
display(p);
p=&a;
q=&b;
hebing(p,q);
p=&c;
printf("两链表合并后的非升序列为:");
display(p);
}
更多追问追答
追问
可不可以麻烦你画个这个代码的流程图给我
追答

这都过了一个月了都。。。。。

我不知道你要什么样的流程图,这里面只有一个算法就是排序罢了,因为我是偷懒写的,后面一问或许是要求先排序再连接,但是我是先连接再排序,这样方便一点

所以我只画了这个排序算法的流程图,而且我word用的并不好,,抱歉了= =

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式