首页 > 其他分享 >9.18周一总结

9.18周一总结

时间:2023-09-18 23:25:57浏览次数:40  
标签:总结 return 9.18 int Sq elem length SqList 周一

今天写了数据结构的函数题

本题要求实现六个函数,顺序表为整型数据,可实现输入、输出、取值、查找、插入、删除功能。输入样例与输出样例对应情况见下图。

函数接口定义

顺序表描述的结构体为
typedef struct {
    ElemType *elem; //存储空间的基地址
    int length; //当前长度
} SqList;

需要实现函数的接口分别为:

int GetElem(SqList L, int i, ElemType &e)  顺序表的取值
判断i值是否合理,若不合理,返回0;[i-1]单元存储第i个数据元素; 返回1

int LocateElem_Sq(SqList L, double e) 顺序表的查找
查找成功,返回序号i+1;查找失败,返回0

int ListInsert_Sq(SqList &L, int i, ElemType e)顺序表的插入
判断i值,不合法返回0;当前存储空间已满,返回0;插入位置及之后的元素后移;将新元素e放入第i个位置;表长增1;返回1

int ListDelete_Sq(SqList &L, int i)顺序表的删除
判断i值,不合法返回0;被删除元素之后的元素前移;表长减1;返回1

void ListInput(SqList &L)顺序表数据的输入
输入顺序表长度;依次输入数据;表长赋值

void ListOutput(SqList L)顺序表数据的输出

裁判测试程序样例:

#include<iostream>
#include<string>
#include<iomanip>
#include <cstdlib>
using namespace std;

#define OVERFLOW -2
 typedef int ElemType; //ElemType 为可定义的数据类型,此设为int类型

#define MAXSIZE 100            //顺序表可能达到的最大长度

typedef struct {
    ElemType *elem; //存储空间的基地址
    int length; //当前长度
} SqList;

void InitList_Sq(SqList &L) { //算法2.1 顺序表的初始化
    //构造一个空的顺序表L
    L.elem = new ElemType[MAXSIZE]; //为顺序表分配一个大小为MAXSIZE的数组空间
    if (!L.elem)
        exit(OVERFLOW); //存储分配失败退出
    L.length = 0; //空表长度为0

}


/* 请在这里填写答案 */

int main() {
    SqList L;
    int i = 0, temp, a, c;
    double price;
    ElemType e;
    //初始化线性表
      InitList_Sq(L);
     //输入线性表

            ListInput(L);
    //输出线性表
            ListOutput(L);
    //顺序表取值
            cin>>i;
            temp = GetElem(L, i, e);
            if (temp != 0) {
                cout <<"查找位置的数是"<<e<< endl;
            } else
                cout << "查找失败!位置超出范围\n";
    //顺序表查找

            cin >> price;
            temp = LocateElem_Sq(L, price);
            if (temp != 0) {

                cout << "该数位置为" << temp << endl;
            } else
                cout << "查找失败!\n";

        //顺序表的插入

            cin >> a;
            cin >> e; //输入a和e,a代表插入的位置,e代表插入的数值
            if (ListInsert_Sq(L, a, e))
                  ListOutput(L);
            else
                cout << "插入失败\n";
      
            //顺序表的删除

            cin >> c;
            if (ListDelete_Sq(L, c))
                 ListOutput(L);
            else
                cout << "删除失败\n";


    return 0;
}

输入样例

5
5 4 3 2 1
2
2
2 6
6

输出样例

5 4 3 2 1 
查找位置的数是4
该数位置为4
5 6 4 3 2 1 
5 6 4 3 2 

自己写的,有一点没通过

void ListInput(SqList &L)
{
    int n;
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>L.elem[i];
        L.length++;
    }
}
void ListOutput(SqList L)
{
    for(int i=0;i<L.length;i++){
        cout<<L.elem[i]<<" ";
    }
    cout<<endl;
}
int GetElem(SqList L, int i, ElemType &e){
    if(i<0||i>L.length) return 0;
    e=L.elem[i-1];
    return 1;
}
int LocateElem_Sq(SqList L, double e)
{
    for(int i=0;i<L.length;i++){
        if(L.elem[i]==e) return i+1;
    }
    return 0;
}
int ListInsert_Sq(SqList &L, int i, ElemType e){
    if(i<0||i>L.length) return 0;
    if(L.length==MAXSIZE) return 0;
    for(int j=L.length-1;j>=i-1;j--){
        L.elem[j+1]=L.elem[j];
    }
    L.elem[i-1]=e;
    ++L.length;
    return 1;
}
int ListDelete_Sq(SqList &L, int i){
    if(i<0||i>L.length) return 0;
    for(int j=i;j<L.length;j++){
        L.elem[j-1]=L.elem[j];
    }
    L.length--;
    return 1;
}

改正后

int GetElem(SqList L, int i, ElemType &e) // 顺序表的取值
{
if(i<1||i>L.length)//i值不合理的情况
return 0;//不合理返回0
e=L.elem[i-1];//elem第[i-1]单元存储第i个元素
return 1;
}

int LocateElem_Sq(SqList L, double e) //顺序表的查找
{
int i;
for(i=0;i<L.length;i++)//for循环对于顺序表进行遍历
if(L.elem[i]==e) return i+1;//序号i+1

return 0;
}

int ListInsert_Sq(SqList &L, int i, ElemType e)//顺序表的插入
{
int j;
if(i<1||i>L.length)//i值不合法
{return 0;}
if(L.length==MAXSIZE)//存储空间已满
{ return 0;}
for(j=L.length-1;j>=i-1;j--){
L.elem[j+1]=L.elem[j];//将插入位置及之后的元素后移
}
L.elem[i-1]=e;
++L.length;
return 1;
}
int ListDelete_Sq(SqList &L, int i)//顺序表的删除
//判断i值,不合法返回0;被删除元素之后的元素前移;表长减1;返回1
{
int j;
if(i<1||i>L.length)//i值不合法
return 0;
for(j=i;j<L.length;j++){
L.elem[j-1]=L.elem[j];//被删除元素之后的元素前移
}
--L.length;
return 1;
}

void ListInput(SqList &L)//顺序表数据的输入
//输入顺序表长度;依次输入数据;表长赋值
{
int n;
cin>>n;
for(int i=0;i<n;i++){
scanf("%d", &L.elem[i]);
L.length++;
}
}

void ListOutput(SqList L)//顺序表数据的输出
{
int i;

for (i = 0; i < L.length; i++)
{
cout << L.elem[i] << " ";
}
cout<<endl;

}

标签:总结,return,9.18,int,Sq,elem,length,SqList,周一
From: https://www.cnblogs.com/gyg1222/p/17708724.html

相关文章

  • 今日总结
    1.进入HBase客户端命令行[atguigu@hadoop102hbase]$bin/hbaseshell2.查看帮助命令hbase(main):001:0>help3.查看当前数据库中有哪些表hbase(main):002:0>list3.2表的操作1.创建表hbase(main):002:0>create'student','info'2.插入数据到表hbase(main):......
  • 每日总结
    今日收获将ppt写完啦!!背了不少的单词,明天一定要记得报名六级去!!!学习hadoop的基础知识嘞!还有,学到了python爬取数据的话,是分为url是否带参数的(params)!明天预计报名六级!!希望开发案例能发挥得好一点!继续学习大数据的相关知识!背单词当然少不了啊!......
  • 9.18日总结
    今天是每个中国人都应该铭记的日子,历史上的今天东北沦陷了,我们应该为抗战烈士们默哀,上午进行了传统制造实训,了解了手工制造机床、数控制造机床,了解了激光打印与激光雕刻,对传统制造实训有了新的认知,下午的Java课学了方法,对30道四则运算题进行了完善。......
  • 课堂测验(9.18)
    出30道二年级四则运算题目减法不能有负数,不能有重复题目,乘法结果小于四位数,除法是整除,能计时,能判断结果正确与否,能给出正确结果,正确率,错题数目首先一个记录时间的类packagehomework;publicclasstimeextendsThread{privateintseconds;//秒//计时方法@Overri......
  • 9月18号周一
    importjavax.swing.*;importjava.awt.*;importjava.util.Random;publicclassdenglujiemian{publicdenglujiemian(){}publicvoidinitUI(){//创建对象JFramejf=newJFrame();//设置窗体名称jf.setTitle("登录界面");//设置窗体......
  • 9.18r
    Pythonrequest_id传递除中间件的方式还可以采用本地线程实现;专业名词记忆得加强。描述符协议(get.set.delete魔术方法);Notimplemented。二元运算中可能会用到;MySQL大数据的优化。orm可能面临的一些弊端(映射。性能。独立性等方面不足。大数据量还是建议原生sql)分库分表(目......
  • 2023.9.18
    通过java的自带类写出了登录系统的框架,其中SWing类其中包含了设置框,设置字体以及颜色,还可以设置绝对位置。packagedenglujiemian;importjavax.swing.*;importjava.awt.*;importjava.util.ArrayList;importjava.util.Random;publicclassdenglu{publicstaticvoidma......
  • 9.18随笔
    用c++实现一个程序:任意生成30道两位数四则运算题目,要求:减法输出结果不可以出现负数,除法输出结果不能有小数,乘法输出结果位数不可超过999.代码实现#include<iostream>#include<cstdlib>#include<ctime>usingnamespacestd;intgenerateNumber(intmin,intmax){retur......
  • 9.18每日总结
    今日学习C#基本语法,感觉和java类似,准备团队任务学习软考,开始复习数据结构加法规则:多项相加,保留最高阶段,并将系数化为1乘法规则:多项相乘都保留,并将系数化为1加法乘法混合规则:先小括号在乘法规则最后加法规则递归的时间和空间复杂度递归主方法T(n)=aT(n/b)+f(n)线性表,......
  • MYSQL SQL做题总结
    一.关于join1.内外左右连接2.交叉联结(corssjoin)使用交叉联结会将两个表中所有的数据两两组合。如下图,是对表“text”自身进行交叉联结的结果:3.三表双双连接力扣题目a与b表笛卡尔积,再与c表左连接。SELECTa.student_id,a.student_name,b.subject_name,count(c.subject......