ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

6-1 顺序表的实现,尝试自主实现

2022-09-13 13:32:08  阅读:158  来源: 互联网

标签:尝试 顺序 return 实现 elem int 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)顺序表数据的输出

下面是代码,使用的语言为C++:

#inclued<iostream>

#include<string>

#include<iomanip>//用到i/o控制流的时候使用

#include<cstdlib>//作用相当于C里面的stdlib,是一个函数库

using namespace std;

#define OVERFLOW-2

typedef int ElemType;//将Elem定义为int类型

#define MAXSIZE 100    //规定顺序表所能达到的最大长度,什么时候用这个一目了然

typedef struct        //构造一个结构体

{ElemType *elem;  //这是存储空间的基地址

 int length;

}SqList;    //说明顺序表的结构类型为SQList

void InitList(SqList &L) //顺序表的初始化就是建一个空的顺序表

{L.elem=new ElemType[MAXSIZE];   //为顺序表分配一个数组空间

 if(!L.elem)  exit(OVERFLOW);

 L.length=0;}

void ListInput(SqList &L)   //顺序表的输入

{int i=0;

 int n=0;

 cin>>n

for(i=0;i<n;i++){

scanf("%d",L.elem[i];

L.length++;}}

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

{int i=0;

 for(i=0;i<L.length;I++)

{cout<<L.elem[i]<<" "}

cout<<endl;}

int GetElem(SqList L,int i,ElemType &e)   //顺序表的取值

{if(i<1||i>L.length)

return 0;

e=L.elem[i-1];

return 1;}

int LocateElem(SqList L,double e)  //顺序表的查找

{for(int i=0;i<L.length;i++)

  if(L.elem==e) return i+1;  //查找成功就返回序号i+1;

  return 0;}

int ListInsert(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(SqList &L, int i)  //顺序表的删除

{if(i<1||i>L.length)

return 0;

for(int j=i;j<=L.length-1;j++)

{L.elem[j-1]=L.elem[j];}

--L.length;

return 1;}

int main(){

SqList L;

int i=0,a,c,temp;

double price;

ElemType e;

InitList_Sq(L);

ListInout(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; }

}

标签:尝试,顺序,return,实现,elem,int,length,SqList
来源: https://www.cnblogs.com/zhanshuang/p/16688823.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有