队列排序c语言案例,c语言,如何队列排列

根据自己的理解,作了下面的程序,如发现错误,还请高手指教。谢谢!

21c92f7342edc52acb5684b0b88bdcec.png程序代码:/*-----------------------------------------------------------------------------

输入一个数 n.表示有n个数(n从1开始),再输入一个m,表示下面输入m组数,规定前

一个数在后一数的前面,输出这列数,如:

4

3

1 2

2 3

4 3

1 2 4 3

------------------------------------------------------------------

用全排列来作的这个程序,然后在输出时加上限制。不过在输入试验用的

数据时却出现了两个结果。

我的这个程序中的“规定前一个数在后一个数的前面”这个条件,是指的同

一组数据,在仔细思考这个题意时,也没发现理解错误。

如有高手肯出手指教,不胜感激。

----------------------------------------------------------------------------*/

#include

#include

#define N 100

#define wap(a,b) {int t=a;a=b;b=t;}

int m,n;

int num[N];

int a[N];

/* 检查函数,用于检查输入的数据中是否有超过边界条件的 */

int check()

{

int i=0;

for(;i

if(num[i]>n||num[i]<1) return 0; /* 如果有错误的输入,返回 0 */

return 1;

}

/*-----输入函数----------------------------*/

void input()

{

int i;

printf("input n and m:\n");

scanf("%d %d",&n,&m);

for(i=0;i

scanf("%d %d",&num[i],&num[i+1]);

if(!check(num))

{

printf("error\n");

exit(0); /* 如果发现数值不正确,退出 */

}

for(i=0;i

a[i]=i+1; /* 用于输出的数组赋值 */

}

void print()

{

int *a1,*a2;

int i;

for(i=0;i

{

a1=a2=a;

while(a1

{

if(num[i]==*a1) break;

a1++; /* 如果发现相同的数据,退出循环 */

}

while(a2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值