今天看到一个题:输入4个整数,要求按由小到大的顺序输出。
如果用数组,那个循环很简单,如果不用哪?循环怎么写比较简单。
请指教。
链表
输入 -1结束
#include"stdio.h"
#include<alloc.h>
struct fun{
int data;
struct fun *next;
}*h,*r,*s,*v;
void jiaohuan(int);
int changdu();
void paixu();
void print();
main()
{
int num,x;
h=(struct fun*)malloc(sizeof(struct fun));
r=h;
scanf("%d",&x);
while(x!=-1)
{
s=(struct fun*)malloc(sizeof(struct fun));
s->data=x;
r->next=s;
r=s;
scanf("%d",&x);
}
r->next=NULL;
paixu();
}
void paixu()
{
int i,k,q;
struct fun *p;
p=h->next;
q=changdu();
for(i=0;i<q;i++)
{
for(p=h->next;p->next!=NULL;)
{
k=p->data;
if(k>p->next->data)
{
jiaohuan(k);
}
else
p=p->next;
}
}
print();
}
void jiaohuan(int i)
{
struct fun *p,*u,*t;
p=h;
for(;p->next->data!=i;)
p=p->next;
t=p->next;
u=t->next;
t->next=u->next;
u->next=t;
p->next=u;
}
int changdu()
{ int i=0;
struct fun *p;
p=h;
for(;p->next!=NULL;)
{ i++;
p=p->next;
}
return i;
}
void print()
{
struct fun *p;
p=h;
for(;p->next!=NULL;)
{
p=p->next;
printf("%d\n",p->data);
}
}
#include<iostream>
#include<string>
using namespace std;
int main()
{
int a,b,c,d,e,f,temp=0;
int t[100];
cout << "please input the number of the data : ";
while(cin>>a)
{
for(f=0;f<100;f++)
t[f]=0;
for(b=0;b<a;b++)
cin >> t[b];
for(c=0;c<a;c++)
{
for(d=0;d<a-c;d++)
{
if(t[d]>t[d+1])
{
temp=t[d];
t[d]=t[d+1];
t[d+1]=temp;
}
}
}
cout << "the answer is : ";
for(e=1;e<=a;e++)
cout << t[e]<<" ";
cout << endl <<"pelase input the number of the next date : ";
}
return 0;
}
这个是我写的 你改成C语言就行 ,是用C++写的。 可以排列N个数