计蒜客课程数据结构(顺序表)

1.线性表是由相同数据类型的 nn 个数据元素 a_0a0a_1a1 ... a_{n-1}an1 组成的有限序列。一个数据元素可以由若干个数据项组成。若用 LL 命名线性表,则其一般表示如下:

L=(a_0, a_1, ..., a_{n-1})L=(a0,a1,...,an1)

其中, a_0a0 是唯一的“第一个”数据元素,又称为表头元素;a_{n-1}an1 是唯一的“最后一个”数据元素,又称为表尾元素。

线性表按照存储结构,可以分为顺序表和链表两种类型。

2.顺序表是在计算机内存中以数组形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构

3.顺序表最主要的特点是可以进行 随机访问,即可以通过表头元素的地址和元素的编号(下标),在 O(1)O(1) 的时间复杂度内找到指定的元素。

顺序表的不足之处是插入和删除操作需要移动大量的元素,从而保持逻辑上和物理上的连续性。

4.顺序表的构造,插入,扩容,删除,遍历

#include 
    
    
     
     
#include 
     
     
      
      
using namespace std;
class Vector {
private:
    int size, length;                //顺序表当前的最大容量和当前顺序表中的元素个数
    int *data;                       //动态分配,指向存储元素的数组的指针
public:
    Vector(int input_size) {         //构造函数,构造一个容量为input_size的顺序表
        size = input_size;
        length = 0;
        data = new int[size];        //让data指向一段连续size个int空间
    }
    ~Vector() {                     //析构函数
        delete[] data;              //将data指向的空间回收
    }
    bool insert(int loc, int value) {//顺序表的插入
        if (loc < 0 || loc > length) {//判断插入的位置是否合法
            return false;
        }
        if (length >= size) {           //判断容量是否已经达到上限
            return false;               //这句可注释掉并调用扩容操作
        }
        for (int i = length; i > loc; --i) { //loc位置后元素后移
            data[i] = data[i - 1];
        }
        data[loc] = value;
        length++;
        return true;
    }
    void expand(){                      //顺序表的扩容
        int *old_data=data;
        size=size*2;
        data=new int[size];
        for(int i=0;i
      
      
       
       = length) {
            return false;
        }
        for (int i = index + 1; i < length; ++i) {
            data[i - 1] = data[i];
        }
        length = length - 1;
        return true;
    }
    void print() {                            //顺序表的遍历
        for(int i=0;i
       
       
        
        0){
                cout<<" ";
            }
            cout<
        
        
       
       
      
      
     
     
    
    

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值