一.线性表-顺序表学习笔记(1)

前言

线性表(Liner List)

线性表:是具有相同数据类型的n(n≥0)个数据元素的有限序列,其中n为表长,当n = 0时,线性表是一个空表。

特点:一对一,除第一个唯一前驱,除最后一个有唯一后继.

a1–>a2–>a3–>a4

数据结构三要素:逻辑结构,存储结构,运算.

线性表是一种逻辑结构,有两种存储结构:顺序表和链表.

基本操作

  • 创建,销毁
  • 增加元素
  • 删除元素
  • 按位查找
  • 按值查找

常用操作

  • 判断表空
  • 求表长
  • 打印表

整个项目的构建

image-20210328141636320

编程软件采用vscode,采用cmake管理多文件,不需要手动编译.

关于具体vscode的讲解.建议查看b站视频.

https://www.bilibili.com/video/BV13K411M78v?p=2&spm_id_from=pageDriver

顺序表(静态分配)

静态分配,元素为结构体的顺序表

定义

我们取元素为结构体,写一个复杂一点点的,注意比较结构体相同的时候,不能用==.

未命名文件

#define MAXSIZE 10
//这里的写法也可以typedef struct Student{} Student;一个意思
typedef struct{
    int number;  //序号
    string name; //姓名   
}Student;

//定义一个静态,元素为字符的顺序表,最大元素10
typedef struct 
{
    int length;             //当前表长
    Student data[MAXSIZE] ; //数据

}Seqlist;

初始化

典型错误

//初始化
void initList(Seqlist & l){
    l.length=0;
}
  • 由于内存中的脏数据,假如不初始化,强行访问可能产生意想不到的效果.

我们强制打印一下,明显不是我们想要的结果

void test(){
    Seqlist l;
    initList(l);
    //insertListByOrder(l,1,'a');
    //printList(l);
    for(int i=0;i<10;i++){
        cout << "第" <<i <<"个" <<endl;
        cout << "名字是:"<<l.data[i].name << endl;
        cout << "序号是:" <<l.data[i].number << endl;
    }
}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值