当前位置: 代码迷 >> C语言 >> [讨论]大家一起讨论排序的问题
  详细解决方案

[讨论]大家一起讨论排序的问题

热度:103   发布时间:2007-01-21 20:22:20.0
那就是在八楼程序中出现了错误,9楼说的可以借鉴,写一个链表,可以更容易实现功能,但程序可以能长一些.
我一会写一个程序发上来,稍等
----------------解决方案--------------------------------------------------------

#include<stdio.h>

#define N 10
int main(void) {
int s[N+1]={5,8,9,12,17,50,51,60,102,300};
int sum,i=0,j;

scanf("%d",&sum);

while(sum>s[i]) i++;
for(j=N;j>i;j--) s[j]=s[j-1];
s[i]=sum;
if(s[N-1]<sum) s[N]=sum;
for(j=0;j<N+1;j++) printf("%d ",s[j]);
getch();
}


----------------解决方案--------------------------------------------------------
这个最好用二叉树做。效率高,不过空间上可能有些浪费,如果仅是整型数。
----------------解决方案--------------------------------------------------------
支持三楼
----------------解决方案--------------------------------------------------------
顶三楼
----------------解决方案--------------------------------------------------------
书上都应该有例题的吧.
顶~~~~~~
----------------解决方案--------------------------------------------------------
#include"stdio.h"
#include<alloc.h>
struct fun{
int data;
struct fun *next;
}*h,*r,*s,*v;
void charu() ;
void print();
main()
{
int num,x;
printf("按升序输入数");
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;
charu();
}
void charu()
{
struct fun *p;
int num,sum,i;
p=h;
printf("插入的数");
scanf("%d",&sum);
for(;p->next->data<sum&&p->next!=NULL;) p=p->next;
s=(struct fun*)malloc(sizeof(struct fun));
s->data=sum;
s->next=p->next;
p->next=s;
print();
}
void print()
{
struct fun *p;
p=h;
for(;p->next!=NULL;)
{
p=p->next;
printf("%d\n",p->data);
}
}
----------------解决方案--------------------------------------------------------
谢谢大家
----------------解决方案--------------------------------------------------------
  相关解决方案