数据结构与算法(顺序表基础)

#include<iostream>
#include<fstream>
#include<string>
#include<cstring>
#include<iomanip>

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

using namespace std;
typedef int ElemType;//定义元素类型 
typedef int Status;

typedef struct{
    ElemType *elem;//存储空间基地址 
    int length;//当前项的个数 
}SqList;//数序存储结构类型为SqList 

Status InitList(SqList &L);//初始化
Status Input(SqList &L,int n);//输入元素 
Status Output(SqList L);//输出元素 
Status GetElem(SqList L,int i,ElemType &e);//得到第i个元素的值,并存到e中
int Locate(SqList L,ElemType e);//查找e的数据元素,并返回其序号
Status ListInsert(SqList &L,int i,ElemType e);//在第i个位置插入新的元素e
Status ListDelete(SqList &L,int i);//删除第i个元素 
int main(){
    SqList L;
    InitList(L);
    
    int n;cin>>n;
    Input(L,n);
    
    /*int i;cin>>i;
    ElemType e;
    GetElem(L,i,e);
    cout<<e;*/ 
    
    /*ElemType e;cin>>e;
    int x=Locate(L,e);
    if(x)
        cout<<x;
    else 
        cout<<"未找到";*/ 
    
    /*int i;cin>>i;
    ElemType e;cin>>e;
    ListInsert(L,i,e);*/
    
    /*int i;cin>>i;
    ListDelete(L,i);*/ 
    
    Output(L);
    return 0;

Status InitList(SqList &L)//初始化
{
    L.elem=new ElemType[MAXSIZE];//分配一个大小为MAXSIZE的数组空间
    if(!L.elem) exit(OVERFLOW);//储存分配失败退出
    L.length=0;//空表长度为0 
    return OK; 
}

Status Input(SqList &L,int n)//输入元素 
{
    for(int i=0;i<n;i++)
    {
        cin>>L.elem[i];
        L.length++;
    }
        
    return OK;
}

Status Output(SqList L)//输出元素 
{
    for(int i=0;i<L.length;i++)
        cout<<L.elem[i]<<" ";
    return OK;
}

Status GetElem(SqList L,int i,ElemType &e)//得到第i个元素的值,并存到e中
{
    e=L.elem[i-1];
}

int Locate(SqList L,ElemType e)//查找e的数据元素,并返回其序号
{
    for(int i=0;;i++)
    {
        if(L.elem[i]==e)//查找成功 
            return i+1;
    }
    return 0;//查找失败 
}

Status ListInsert(SqList &L,int i,ElemType e)//在第i个位置插入新的元素e
{
    if((i<1)||(i>L.length))// 1<=i<=L.length 
         return ERROR; //i值不合法
    if(L.length==MAXSIZE) 
        return ERROR;//当前存储空间已满 
    for(int j=L.length;j>=i;j--)//将元素后移 
        L.elem[j]=L.elem[j-1];
    L.elem[i-1]=e;
    L.length++;//长度加1
    return OK;
}

Status ListDelete(SqList &L,int i)//删除第i个元素 
{
    if((i<1)||(i>L.length))// 1<=i<=L.length 
         return ERROR; //i值不合法 
    
    for(int j=i-1;j<L.length;j++)//将元素前移 
        L.elem[j]=L.elem[j+1];
    L.length--;//长度减1
    return OK;
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值