发布网友
共4个回答
热心网友
输入,输出的时候都越界了呀。。。数组最后一个元素的下标为max-1,插入算法也有问题。。。
修改后如下:insert的实现修改过了,已调试。
#include<stdio.h>
#define max 4
void insert(int a[],int count)//从小到大排序
{
int i,j;
int temp;
for(i=1;i<count;i++)
{
temp=a[i];
j=i-1;
while (j>=0&&temp<a[j])
{
a[j+1]=a[j--];
}
a[j+1]=temp;
}
}
void main()
{
int i;
int a[max];
for(i=0;i<max;i++)
scanf("%d",&a[i]);
insert(a,max);
for(i=0;i<max;i++)
printf("%d ",a[i]);
}
热心网友
输入,输出的时候都越界了呀。。。数组最后一个元素的下标为max-1,插入算法也有问题。。。
修改后如下:insert的实现修改过了,已调试。
#include<stdio.h>
#define max 4
void insert(int a[],int count)//从小到大排序
{
int i,j;
int temp;
for(i=1;i<count;i++)
{
temp=a[i];
j=i-1;
while (j>=0&&temp<a[j])
{
a[j+1]=a[j--];
}
a[j+1]=temp;
}
}
void main()
{
int i;
int a[max];
for(i=0;i<max;i++)
scanf("%d",&a[i]);
insert(a,max);
for(i=0;i<max;i++)
printf("%d ",a[i]);
}
热心网友
#include<stdio.h>
#define max 4
void insert(int a[],int count)//从小到大排序
{
int i,j;
for(i=2;i<=count;i++)
if(a[i]<a[i-1])
{
a[0]=a[i];
a[i]=a[i-1];
for(j=i-2;a[0]<a[j];j--)
a[j+1]=a[j];
a[j+1]=a[0];//仔细分析排序过程
}
}
void main()
{
int i;
/*数组的开始下标是0,最大的是max-1,比如arr[5]的数组,下标是0,1,2,3,4*/
int a[max+1];//修改这句就可以了
for(i=1;i<=max;i++)
scanf("%d",&a[i]);
insert(a,max);
for(i=1;i<=max;i++)
printf("%d ",a[i]);
}
热心网友
Node * Link_sort(Node * head)
{
Node * s=new Node;
Node *a=s;
s->next=head;
Node *p=head->next;
head->next=NULL;
while(p!=NULL)
{
Node *p1=p->next;
Node *p2=s->next;
while(p2!=NULL)
{
if(p->data<=p2->data)
{
s->next=p;
p->next=p2;
break;
}
if(p2->next==NULL)
{
p2->next=p;
p->next=p2;
break;
}
s=s->next;
p2=s->next;
}
p=p1;
s=a;
}
return a->next;
}
这里我定义的节点类为Node
class Node
{
public:
int data;
Node *next;
Node()
{
next=NULL;
}
}
热心网友
int a[max];
改成
int a[max + 1];
热心网友
#include<stdio.h>
#define max 4
void insert(int a[],int count)//从小到大排序
{
int i,j;
for(i=2;i<=count;i++)
if(a[i]<a[i-1])
{
a[0]=a[i];
a[i]=a[i-1];
for(j=i-2;a[0]<a[j];j--)
a[j+1]=a[j];
a[j+1]=a[0];//仔细分析排序过程
}
}
void main()
{
int i;
/*数组的开始下标是0,最大的是max-1,比如arr[5]的数组,下标是0,1,2,3,4*/
int a[max+1];//修改这句就可以了
for(i=1;i<=max;i++)
scanf("%d",&a[i]);
insert(a,max);
for(i=1;i<=max;i++)
printf("%d ",a[i]);
}
热心网友
Node * Link_sort(Node * head)
{
Node * s=new Node;
Node *a=s;
s->next=head;
Node *p=head->next;
head->next=NULL;
while(p!=NULL)
{
Node *p1=p->next;
Node *p2=s->next;
while(p2!=NULL)
{
if(p->data<=p2->data)
{
s->next=p;
p->next=p2;
break;
}
if(p2->next==NULL)
{
p2->next=p;
p->next=p2;
break;
}
s=s->next;
p2=s->next;
}
p=p1;
s=a;
}
return a->next;
}
这里我定义的节点类为Node
class Node
{
public:
int data;
Node *next;
Node()
{
next=NULL;
}
}
热心网友
输入,输出的时候都越界了呀。。。数组最后一个元素的下标为max-1,插入算法也有问题。。。
修改后如下:insert的实现修改过了,已调试。
#include<stdio.h>
#define max 4
void insert(int a[],int count)//从小到大排序
{
int i,j;
int temp;
for(i=1;i<count;i++)
{
temp=a[i];
j=i-1;
while (j>=0&&temp<a[j])
{
a[j+1]=a[j--];
}
a[j+1]=temp;
}
}
void main()
{
int i;
int a[max];
for(i=0;i<max;i++)
scanf("%d",&a[i]);
insert(a,max);
for(i=0;i<max;i++)
printf("%d ",a[i]);
}
热心网友
#include<stdio.h>
#define max 4
void insert(int a[],int count)//从小到大排序
{
int i,j;
for(i=2;i<=count;i++)
if(a[i]<a[i-1])
{
a[0]=a[i];
a[i]=a[i-1];
for(j=i-2;a[0]<a[j];j--)
a[j+1]=a[j];
a[j+1]=a[0];//仔细分析排序过程
}
}
void main()
{
int i;
/*数组的开始下标是0,最大的是max-1,比如arr[5]的数组,下标是0,1,2,3,4*/
int a[max+1];//修改这句就可以了
for(i=1;i<=max;i++)
scanf("%d",&a[i]);
insert(a,max);
for(i=1;i<=max;i++)
printf("%d ",a[i]);
}
热心网友
Node * Link_sort(Node * head)
{
Node * s=new Node;
Node *a=s;
s->next=head;
Node *p=head->next;
head->next=NULL;
while(p!=NULL)
{
Node *p1=p->next;
Node *p2=s->next;
while(p2!=NULL)
{
if(p->data<=p2->data)
{
s->next=p;
p->next=p2;
break;
}
if(p2->next==NULL)
{
p2->next=p;
p->next=p2;
break;
}
s=s->next;
p2=s->next;
}
p=p1;
s=a;
}
return a->next;
}
这里我定义的节点类为Node
class Node
{
public:
int data;
Node *next;
Node()
{
next=NULL;
}
}
热心网友
int a[max];
改成
int a[max + 1];
热心网友
int a[max];
改成
int a[max + 1];
热心网友
输入,输出的时候都越界了呀。。。数组最后一个元素的下标为max-1,插入算法也有问题。。。
修改后如下:insert的实现修改过了,已调试。
#include<stdio.h>
#define max 4
void insert(int a[],int count)//从小到大排序
{
int i,j;
int temp;
for(i=1;i<count;i++)
{
temp=a[i];
j=i-1;
while (j>=0&&temp<a[j])
{
a[j+1]=a[j--];
}
a[j+1]=temp;
}
}
void main()
{
int i;
int a[max];
for(i=0;i<max;i++)
scanf("%d",&a[i]);
insert(a,max);
for(i=0;i<max;i++)
printf("%d ",a[i]);
}
热心网友
#include<stdio.h>
#define max 4
void insert(int a[],int count)//从小到大排序
{
int i,j;
for(i=2;i<=count;i++)
if(a[i]<a[i-1])
{
a[0]=a[i];
a[i]=a[i-1];
for(j=i-2;a[0]<a[j];j--)
a[j+1]=a[j];
a[j+1]=a[0];//仔细分析排序过程
}
}
void main()
{
int i;
/*数组的开始下标是0,最大的是max-1,比如arr[5]的数组,下标是0,1,2,3,4*/
int a[max+1];//修改这句就可以了
for(i=1;i<=max;i++)
scanf("%d",&a[i]);
insert(a,max);
for(i=1;i<=max;i++)
printf("%d ",a[i]);
}
热心网友
Node * Link_sort(Node * head)
{
Node * s=new Node;
Node *a=s;
s->next=head;
Node *p=head->next;
head->next=NULL;
while(p!=NULL)
{
Node *p1=p->next;
Node *p2=s->next;
while(p2!=NULL)
{
if(p->data<=p2->data)
{
s->next=p;
p->next=p2;
break;
}
if(p2->next==NULL)
{
p2->next=p;
p->next=p2;
break;
}
s=s->next;
p2=s->next;
}
p=p1;
s=a;
}
return a->next;
}
这里我定义的节点类为Node
class Node
{
public:
int data;
Node *next;
Node()
{
next=NULL;
}
}
热心网友
int a[max];
改成
int a[max + 1];