注册 登录
编程论坛 数据结构与算法

请教下怎么把下面的算法用c++变出来~自己折腾了很久。。错误太多了。缺一个结构体定义,和主函数。

ccccmeiyi 发布于 2016-03-11 11:21, 3878 次点击
int compare(sqlist A,sqlist B)
{
    j=0;
    while(j<A.length&&j<B.length)
    {
        if(A.elem[j]<B.elem[j])  return (-1);
        else if(A.elem[j]>B.elem[j])  return(1);
        {
            else j++;
        }
    }
    if(A.length==j<B.length)  return (0);
    else if(A.length<j<B.length)  return (-1);
         else return(1);
}
4 回复
#2
令狐少侠562016-03-11 21:12
else if(A.elem[j]>B.elem[j])  return(1);
        {
            else j++;
        }
看不懂这句啊
#3
ccccmeiyi2016-03-12 15:26
回复 2楼 令狐少侠56
是比较链表A,B中的元素大小
#4
ccccmeiyi2016-03-12 17:14
#include<iostream>
using namespace std;
struct SqList
{
    char elem[100];
    int length;
};
int compare(struct SqList A,struct SqList B)
{
    int j=0;
    while(j<A.length&&j<B.length)
    {
        if(A.elem[j]<B.elem[j]) cout<<1;
        else if(A.elem[j]>B.elem[j])  cout<<2;
            else   j++;
        
    }
    if(A.length==B.length)  cout<<3;
    else if(A.length<B.length)  cout<<4;
         else cout<<5;

}
int main()
{
    int N;
    struct SqList C={"afternnn",8};
    struct SqList D={"afternoon",9};
    N=compare(C,D);
    return 0;
   
}
这是我自己编的。。请教哪里有错?
#5
向上的小树2016-03-13 20:49
回复 4楼 ccccmeiyi
1、你的函数里面缺少返回值,这个错误编译器里面有报的。我不知道你是不是刚学编程的新手,不然的话这种问题很容易找的。
2、写代码请注意代码规范,你自己看下你的代码,对比下书上或者网上的规范代码有什么不同,首先你自己觉得看起来舒不舒服?
3、compare函数逻辑性也有问题,前面while里面,你是想比较哪个字符串要大,而后面的选择语句又是比较哪个的字符个数要多,这个你不觉得很别扭吗?建议你分开比较,写两个函数,一个比较大小,一个只比较字符个数。

程序代码:
#include<iostream>
using namespace std;

#define OK        1
#define ERROR    0

struct SqList
{
    char elem[100];
    int length;
};
int compare(struct SqList A, struct SqList B)
{
    int j=0;
    while(j < A.length && j < B.length)
    {
        if(A.elem[j] < B.elem[j])
            return OK;
        else if(A.elem[j] > B.elem[j])  
            return ERROR;
        else   j++;
    }

}
int compare_length(struct SqList A, struct SqList B)
{
    if(A.length == B.length)
        return 3;
    else if(A.length<B.length)
        return 4;
    else
        return 5;
}
int main()
{
    int N, m;
    struct SqList C={"afternnn",8};
    struct SqList D={"afternoon",9};
    N = compare(C,D);
    m = compare_length(C, D);
    return 0;
}

这些代码经过调试正确的,用了两个函数分开比较大小与长度。结果如下
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
1