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

求一个顺序表中一个元素的前驱元素

chongxi 发布于 2017-04-29 10:05, 3151 次点击
Status PriorElem(Sqlist L,ElemType cure_e,ElemType &pre_e)//返回cure_e元素的前驱元素
{
    int i;
    for(i=1;i<L.length;i++)
    {
        if(cure_e==L.elem[i])
            pre_e=L.elem[i-1];
    }
    return OK;//怎么返回失败
}

请问这样写是对的么 可以返回pre_e么为什么运行不出来呢

typedef struct
{
    ElemType *elem;
    int length;
    int listsize;
}Sqlist;//定义顺序表
 
主函数里是这样的
printf("输入元素:");
    scanf("%d",&cure_e);
    PriorElem(L,cure_e,pre_e);
2 回复
#2
书生牛犊2017-05-01 07:39
你这个规则设置的就不好。。虽然说“写函数的时候尽可能应该遵循一个出口原则(即只用一个return)”,但是像这种一个函数也就4.5行,你写多一个return我觉得不见得能使程序变得多复杂、难以理解或者难以维护的
程序代码:
Status PriorElem(Sqlist L,ElemType cure_e,ElemType &pre_e)//返回cure_e元素的前驱元素
{
    int i;
/*   if(!L){printf("没有传入有效的有序列表!\n");return ERROR;}
     if(L.elem[0]==cure_e){printf("所查询的关键字在顺序表表头,没有前驱元素\n");return ERROR;}
*/


    for(i=1;i<L.length;i++)
    {
        if(cure_e==L.elem[i]){
            pre_e=L.elem[i-1];
        return OK;//如果成功就可以跳出此函数
        }

    }
    return ERROR;//能运行到这一步自然就说明顺序表中不存在要寻找的元素
}





#3
chongxi2017-05-03 14:44
回复 2楼 书生牛犊
清楚啦谢谢~~~~~~
1