标题:排序问题,请大神帮我看一下错在哪里,运行不出来
只看楼主
eelle
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2015-6-30
结帖率:100%
 问题点数:0 回复次数:1 
排序问题,请大神帮我看一下错在哪里,运行不出来
程序代码:
#include <stdlib.h>
#include <stdio.h>
#define MaxSize 1000
typedef struct record 

 {
    int elem[MaxSize];
    int length;  //当前长度
}SqList

void output(SqList &L)
{ int i;
    for(i=0;i<L.length;i++)
    {
        printf("%5d",L.elem[i]);
    }
    return;)
}

void InsertSort(sqList &L)
{int i,j;  
    for( i=2; i<=L.length;i++) 
    {  if(L.r[i].key < L.r[i-1].key) 
        {  L.r[0] = L.r[i];
             L.r[i] = L.r[i-1];  
             for( j=i-2; (L.r[0].key < L.r[j].key); j--) 
             L.r[j+1] = L.r[j];
              L.r[j+1] = L.r[0]; }
        }
    
    
}


void BubbleSort(SqList &L)
{//冒泡排序
int i,j; 
for(i=0;i<L.length-2;i++)
{
int flag=1;
for(j=0;j<L.length-i-2;j++)
if(L.r[j].key>L.r[j+1].key)
{
flag = 0;
int temp;
temp=L.r[j].key;
L.r[j].key=L.r[j+1].key;
L.r[j+1].key=temp;
}

void QuickSort(sqList &L, int low, int high)
{L.r[0]=L.r[low];

 pivotkey=L.r[low].key;

 while(low<high)

 {while(low<high&&L.r[high].key>=pivotkey) --high;
    L.r[low]=L.r[high];
while(low<high&&L.r[low].key<=pivotkey) ++low;
L.r[high]=L.r[low];}
L.r[low]=L.r[0];
return low;
}

main()
{//循环对顺序表进行排序
    int i,flag,selem,sresult,ielem,locate;
    SqList L;
    Init(L); 
    printf("\n插入排序输入1,冒泡排序输入2,快速排序输入3,退出输入任意键:");
    scanf("%d",&flag);
    while(flag==1||flag==2||flag==3)
    {printf("请输入排序记录的长度:");
        scanf("%d",&L.length);
    printf("请输入%d个整数",&L.length);
    for(i=0;i<=L.length;i++)
      scanf("%d",&L.elem[i-1]);
    {if(flag==1)
     InsertSort(sqList &L);
     if(flag==2)
     BubbleSort(SqList &L,int n);
     if(flag==3)
     QuickSort(sqList &L, int low, int high);
    }    
    output(SqList &L);
    printf("\n插入排序输入1,冒泡排序输入2,快速排序输入3,退出输入任意键:");
    scanf("%d",&flag);

    }
        }
        
    
    
    } 
搜索更多相关主题的帖子: color record 
2015-07-01 13:36
林月儿
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:湖南
等 级:版主
威 望:138
帖 子:2276
专家分:10647
注 册:2015-3-19
得分:0 
'SqList' has no member named 'r'代码东拼西凑的吧
程序代码:
#include <stdlib.h>
#include <stdio.h>
#define MaxSize 1000
typedef struct record 
{
    int elem[MaxSize];
    int length;  //当前长度
}SqList;

void output(SqList L)
{ int i;
    for(i=0;i<L.length;i++)
    {
        printf("%5d",L.elem[i]);
    }
    return;
}

void InsertSort(SqList &L)
{int i,j;  
    for( i=2; i<=L.length;i++) 
    {  if(L.r[i].key < L.r[i-1].key) 
        {  L.r[0] = L.r[i];
             L.r[i] = L.r[i-1];  
             for( j=i-2; (L.r[0].key < L.r[j].key); j--) 
             L.r[j+1] = L.r[j];
              L.r[j+1] = L.r[0]; 
        }
    }
    
}


void BubbleSort(SqList &L)
{//冒泡排序
int i,j; 
for(i=0;i<L.length-2;i++)
{
int flag=1;
for(j=0;j<L.length-i-2;j++)
if(L.r[j].key>L.r[j+1].key)
{
flag = 0;
int temp;
temp=L.r[j].key;
L.r[j].key=L.r[j+1].key;
L.r[j+1].key=temp;
}
} 
} 
void QuickSort(SqList &L, int low, int high)
{L.r[0]=L.r[low];
pivotkey=L.r[low].key;
while(low<high)
{while(low<high&&L.r[high].key>=pivotkey) --high;
    L.r[low]=L.r[high];
while(low<high&&L.r[low].key<=pivotkey) ++low;
L.r[high]=L.r[low];}
L.r[low]=L.r[0];
//return low;
}

main()
{//循环对顺序表进行排序
    int low,high,n; 
    int i,flag,selem,sresult,ielem,locate;
    SqList L;
//    Init(L); 
    printf("\n插入排序输入1,冒泡排序输入2,快速排序输入3,退出输入任意键:");
    scanf("%d",&flag);
    while(flag==1||flag==2||flag==3)
    {printf("请输入排序记录的长度:"); 
        scanf("%d",&L.length);
    printf("请输入%d个整数",L.length);
    for(i=0;i<=L.length;i++)
      scanf("%d",&L.elem[i-1]);
    {if(flag==1)
     InsertSort(L);
     if(flag==2)
     BubbleSort(L);
     if(flag==3)
     QuickSort(L,low,high);
    }    
    output(L);
    printf("\n插入排序输入1,冒泡排序输入2,快速排序输入3,退出输入任意键:");
    scanf("%d",&flag);
    }
}

剑栈风樯各苦辛,别时冰雪到时春
2015-07-01 13:48



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-454931-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020940 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved