线性表顺序存储C++类的方式

#线性表的顺序存储方式
在内存中开辟一块堆内存空间,安照顺序排列数据元素。已知起始位置地址和元素的空间大小可以计算出任意元素的地址位置,具体公式为

locate(A(i-1)) = locate(A1) +(i-1)*c
A1:起始位置。
c:每个元素所需的空间大小。

优点:1、线性表不需要为逻辑关系增加额外的地址空间
2、线性表方便获取数据元素
缺点:1、插入、删除需要移动大量数据元素
2、线性表的长度太长难以确定容量
3、会造成空间碎片

下面是把线性表作为一个类

#include<iostream>
#include<cstring>

#define TYPE int
#define Max 40
using namespace std;

class Slist
{
    TYPE *date;
    int len;

这里设定数据最大空间为40,选定了线性表的长度和起始空间

public:
     Slist(void)
    {
        date = new TYPE[Max];
        len = 0;


    }   
    //添加元素
    bool add_head(TYPE dat)
    {   
        if(len >= Max) return false;
        date[len++] = dat;
        return true;

    }
    //表满
    bool full(void)
    {
        if(len == Max) return true;
            return false;
    }
    //表空
    bool empty(void)
    {
        if(len == 0) return true;
        return false;
    }
    //插入
    bool add_index(TYPE dat,int index)
    {
        if(full()) return false;
        if(index<=0 || index>len) return false;
        for(int i =len;i>index-2;i--)
        {
            date[i+1] = date[i];
        }
        date[index-1] = dat;
        len++;
        return true;
    }
        //删除
    bool del_index(int index)
    {
        if(empty()) return false;
        if(index<=0 || index>len) return false;
        for(int i = index-1;i<len;i++)
        {
            date[i] = date[i+1];
        }
        len--;
        return true;
    }
    //查找
    int Locate_list(TYPE dat)
    {
        if(empty()) return false;
        for(int i =0;i<len;i++)
        {
            if(dat == date[i])
            {
                return i+1;
            }
        }
          return false;
    }
    //获取指定位置元素
    TYPE Get_index_list(int index)
    {
        if(empty()) return false;
        if(index<=0 || index>len) return false;
        return date[index-1];
    }
    //遍历
    void show(void)
    {
        for(int i =0;i<len;i++)
        {
            cout<< date[i]<<" ";
        }
        cout<<endl;
    }
    ~Slist(void)
    {
        delete[]  date;
    }             
                                   

这是具体的代码实现线性表的创建、插入、删除、获取元素、判断表空、表满。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值