数据结构线性表前置知识

 持续更新,目前笔者的学习进度中只有这些知识是在学习数据结构之前没有注意到的。

struct

struct是 C++ 中用于定义结构体(structure)的关键字。

这是一种可以自定义的构体中的每个成员可以是不同的数据类型,包括基本数据类型(如int double char等)和其他用户定义的数据类型(如数组、指针(记住这个指针,我们在学习数据结构的时候会大量使用这个)、其他结构体等)。

以下两端代码就是在学习数据结构的时候比较常见的使用struct的地方。当然也不局限这几点,笔者目前只学到了这几种。

// 定义链表节点结构体
typedef struct LNode
{
    ElemType data;
    struct LNode *next;
} LNode, *LinkList;
//结构体定义队列
typedef struct
{
    ElemType data[MaxSize];
    int front, rear;
    int size;
} SqQueue;

typedef

官方解释:是 C++ 中的一个关键字,用于为现有的数据类型创建一个新的名称(别名)。


 大白话:给你的数据类型起一个新的名字,比较在数据结构中,我们会自定义很多结构(链表 队列 栈等等),用自己起的名字毕竟还是更方便。 


typedef long long ll;
//long long 就等价于ll
typedef struct
{
    ElemType *data;
    int length;
    int MaxSize;
} SqList;
//类似的定义方法会在之后的数据结构的知识中反复使用。

通过使用typedef,我们可以方便地使用SqList来代替完整的结构体定义,从而提高代码的可读性和可维护性。

也就是说,我们可以在后面的代码中使用SqList来使用这一个新的结构体类型。

int main() 
{
    SqList list;
    return 0;
}

->符号

这个符号一般是用于在对结构体中的数据进行操作。

贴一段代码,方便理解。

bool ListInsert(LinkList &L, int i, ElemType e)
{
    LNode *p = L;
    int j = 0;
    while (p != NULL && j < i - 1)
    {
        p = p->next;
        j++;
    }
    if (p == NULL)
    {
        return false;
    }
    LNode *s = new LNode;
    s->data = e;
    s->next = p->next;
    p->next = s;
    return true;
}

这段代码主要就是用于在链表中进行操作,对于链表进行头插法创建链表。

    LNode *s = new LNode;
    s->data = e;
    s->next = p->next;
    p->next = s;

其中,s->data = e;是为了将e的值插入到新建的节点s的data处。

s->next = p->next;是为了将s的next指针指向p的next(即节点p)。

p->next = s;是将 p 的 next 指向 s。

方便理解,假设我们有如下链表。

head -> A -> B -> C -> NULL

其中,A B C是链表中的节点,NULL表示链表的结尾。

进行如上操作后,我们会得到以下的链表。

head -> A -> s -> B -> C -> NULL

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
线性表是一种常见的数据结构,它是由一组具有相同数据类型的元素组成的序列。线性表中的元素之间存在一对一的关系,即每个元素都有一个前驱元素和一个后继元素,除了第一个元素没有前驱元素,最后一个元素没有后继元素。 线性表的常见操作包括插入、删除、查找和修改等。下面是一些关键的知识点: 1. 顺序存储结构:线性表的顺序存储结构是使用数组来实现的,元素在内存中是连续存储的。通过下标可以直接访问元素,插入和删除操作需要移动其他元素。 2. 链式存储结构:线性表的链式存储结构是使用链表来实现的,每个节点包含数据和指向下一个节点的指针。插入和删除操作只需要修改指针,不需要移动其他节点。 3. 单链表:每个节点只包含一个指向下一个节点的指针。 4. 双链表:每个节点包含一个指向前一个节点和一个指向后一个节点的指针。 5. 循环链表:尾节点指向头节点,形成一个循环。 6. 静态链表:使用数组来实现链表,通过游标来表示指针。 7. 线性表的基本操作: - 初始化:创建一个空的线性表。 - 插入:在指定位置插入一个元素。 - 删除:删除指定位置的元素。 - 查找:根据元素的值或位置查找元素。 - 修改:修改指定位置的元素。 - 遍历:依次访问线性表中的每个元素。 8. 线性表的应用:线性表是其他数据结构的基础,常用于实现栈、队列、数组等数据结构
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值