c语言程序如何实现递减,写一个程序让非递减变成非递增,用C语言。一个程序用两个函数...

2013-09-13 回答

#include

#include

typedef struct node

{

int data;

struct node *next;

}node,*list;

void init(list &head)

{

head=(list)malloc(sizeof(node));

head->next=null;

}

void input(list &h)

{

list p,q;

q=h;

printf("输入数据的个数 n : ");

int n;

scanf("%d",&n);

printf("请输入 %d 个有序递增数据:\n",n);

for (int i=0;i

{

// printf("第 %d 个: ",i+1);

p=(list)malloc(sizeof(node));

scanf("%d",&p->data);

p->next=q->next;

q->next=p;

q=p;

}

}

void output(list h)

{

list p;

p=h->next;

printf("输出数据\n");

while(p!=null)

{

printf("%d ",p->data);

p=p->next;

}

printf("\n");

}

void combine(list &a,list &b,list &c)

{

list p,q,t;

p=a->next;

q=b->next;

free(b);

b=q;

c=a;

a=p;

c->next=null;

while(p&&q)

{

if (p->data<=q->data)

{

a=a->next;

p->next=c->next;

c->next=p;

p=a;

}

else

{

b=q->next;

q->next=c->next;

c->next=q;

q=b;

}

}

if (p!=null)

{

while(p)

{

a=a->next;

p->next=c->next;

c->next=p;

p=a;

}

}

if (q!=null)

{

while(q)

{

b=q->next;

q->next=c->next;

c->next=q;

q=b;

}

}

}

void main()

{

list a,b,c;

init(a);init(b);

printf("\n输入链表a :\n");

input(a);

printf("\n输入链表b :\n");

input(b);

printf("输出合并后的链表:\n");

combine(a,b,c);

output(c);

}

结果:

输入链表a :

输入数据的个数 n : 3

请输入 3 个有序递增数据:

4 5 9

输入链表b :

输入数据的个数 n : 4

请输入 4 个有序递增数据:

2 3 7 10

输出合并后的链表:

输出数据

10 9 7 5 4 3 2

press any key to continue

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值