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日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度