Lemonive 2022-05-21 01:32 采纳率: 100%
浏览 27
已结题

数据结构C++编程,请教一下主函数怎么改写的简便一点

题目:1.使用设置监视哨的顺序查找在顺序表64,5,7,89,6,24里查找6,若找到,输出该元素在顺序表中的位置,否则输出提示语句“未找到”;
2.使用折半查找在顺序表4,15,17,29,56,84里查找50,若找到,输出该元素在顺序表中的位置,否则输出提示语句“未找到”。
我自己打的代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<iostream>
using namespace std;

#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define MAXSIZE 100

typedef int KeyType;
typedef int InfoType;

typedef struct{
    KeyType key;
    InfoType otherinfo;
}ElemType;

typedef struct{
    ElemType *R;
    int length;
}SSTable;

// 设置监视哨的顺序查找
int Search_Seq(SSTable ST,KeyType key){
    int i;
    ST.R[0].key=key;
    for(i=ST.length;ST.R[i].key!=key;--i);
        return i;
}

// 折半查找
int Search_Bin(SSTable ST,KeyType key){
    int low=1;
    int high=ST.length;
    while(low<=high){
        int mid=(low+high)/2;
        if(key==ST.R[mid].key)
            return mid;
        else if(key<ST.R[mid].key)
            high=mid-1;
        else
            low=mid+1;
    }
    return 0;
}

int main(){
    int i,key;
    SSTable t;
    t.R=new ElemType[MAXSIZE];
    cout << "请输入顺序表长度:";
    cin >> t.length;
    cout << "请输入您要查找的顺序表:";
    for(i=1;i<=t.length;i++) 
        cin>>t.R[i].key;
    cout<<"请输入您要查找的数据元素:";
    cin>>key;
    if(Search_Seq(t,key))
        cout<<"该元素在顺序表中的位置为"<<Search_Seq(t,key)<<"个元素"<<endl;
    else 
        cout<<"未找到"<<endl;
    cout<<endl;
    cout << "请输入顺序表长度:";
    cin >> t.length;
    cout << "请输入您要查找的顺序表:";
    for(i=1;i<=t.length;i++) 
        cin>>t.R[i].key;
    cout<<"请输入您要查找的数据元素:";
    cin>>key;
    if(Search_Bin(t,key))
        cout<<"该元素在顺序表中的位置为"<<Search_Bin(t,key)<<"个元素"<<endl;
    else 
        cout<<"未找到"<<endl;
}
代码运行结果如下图

img

我想要达到的结果:可我觉着这个程序的提示语太多了,想简化一下主函数的代码,就是想问问怎么分别拆写顺序查找和折半查找分成两个子函数(编程要求两个查找写在同一主函数里实现调用),或许能将题中的顺序表用数组存储吗?(输出只要显示查找数据元素和查找结果的那种)怎么改写呢
  • 写回答

1条回答 默认 最新

  • Hann Yang 全栈领域优质创作者 2022-05-21 07:51
    关注

    这样是否可行:

    int Search(SSTable ST,KeyType key, index){
     if (index==1){
        方法1的代码
        }
     if (index==2){
        方法2的代码
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 5月30日
  • 已采纳回答 5月22日
  • 创建了问题 5月21日

悬赏问题

  • ¥50 有偿求qftp工具。能连接,下载文件,发送代码,windows环境,最好qt6 要qt creator写的
  • ¥70 刚刚看到一个人的网站居然是通过cname访问的
  • ¥15 Attributeerror:super object has no attribute '__sklearn_tags__'_'
  • ¥15 逆置单链表输出不完整
  • ¥15 宇视vms-B200-A16@R启动不了,如下图所示,在软件工具搜不到,如何解决?(操作系统-linux)
  • ¥500 寻找一名电子工程师完成pcb主板设计(拒绝AI生成式答案)
  • ¥15 关于#mysql#的问题:UNION ALL(相关搜索:sql语句)
  • ¥15 matlab二位可视化能否针对不同数值范围分开分级?
  • ¥15 已经创建了模拟器但是不能用来运行app 怎么办😭自己搞两天了
  • ¥15 关于#极限编程#的问题,请各位专家解答!