数据结构之线性表顺序存储

数据结构之线性表顺序存储

前言:

本学期我们学习到了数据结构,但是我发现身边的同学,C语言基础不够扎实,快速的过度到数据结构上,很多很小的知识点并没有掌握透,并且老师在讲课的过程中也不会跟你很详细的去解释每个代码代表的意思,所以导致很多同学们仍处于懵逼状态,我为了巩固所学的知识以及想帮助些无助的同学为初心,写下了这篇文章,望能有帮助,接下来,时间充裕的情况下我会继续更新,对你有帮助的话,别忘了关注一波!

#include “stdio.h"的解释:

include 称为文件包含命令,其意义是把尖括号" "或引号<>内指定的文件包含到本程序中,成为本程序的一部分。被包含的文件通常是由系统提供的,而stdio为standard input output的缩写,意为“标准输入输出”,在程序要调用输入scanf()或printf()输出函数,必须包含stdio.h文件

#include "stdio.h"
/*
include 称为文件包含命令,其意义是把尖括号""或引号<>内指定的文件包含到本程序中,
成为本程序的一部分。被包含的文件通常是由系统提供的.
而stdio为standard input output的缩写,意为“标准输入输出”
在程序要调用输入scanf()或printf()输出函数,必须包含stdio.h文件
*/

#define OK 1 的解释:

#define OK 1 //宏定义,就是定义ok=1,当后面调用ok的时候,ok就相当于1;

typedef int ElemType; 的解释:

typedef int ElemType; /* ElemType类型根据实际情况而定,这里假设为int */
/*

整体代码如下:

#include "stdio.h"
/*
include 称为文件包含命令,其意义是把尖括号""或引号<>内指定的文件包含到本程序中,
成为本程序的一部分。被包含的文件通常是由系统提供的.
而stdio为standard input output的缩写,意为“标准输入输出”
在程序要调用输入scanf()或printf()输出函数,必须包含stdio.h文件
*/
//下列也是同样的意思
#include "stdlib.h"
#include "math.h"
#include "time.h"
#define OK 1 //宏定义,就是定义ok=1,当后面调用ok的时候,ok就相当于1;
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define MAXSIZE 20
/* 存储空间初始分配量,
宏定义,就是定义MAXSIZE=20,当后面比较MAXSIZEk的时候,MAXSIZE就相当于20 */
typedef int ElemType; /* ElemType类型根据实际情况而定,这里假设为int */
/*
typedef类型定义标识符,作用是为一个数据类型或者结构重新定义一个名称;
此处意思是:将整型int关键字重新命名为ElemType,int和ElemType
代表的类型是一样的,声明和定义的变量是等价的,都是整型。也就是说:
int a=10;与 ElemType a = 10;是一样的意思。
*/


结构体代码:

typedef struct
{
    ElemType data[MAXSIZE]; /* 数组,存储数据元素 */
    int length;             /* 线性表当前长度 */
} SqList;

初学者一般是这么定义结构体的:

struct SqList
{
    ElemType data[MAXSIZE]; /* 数组,存储数据元素 */
    int length;             /* 线性表当前长度 */
};

两者区别就在于:typedef是类型定义的意思。
typedef struct{…}SqList;是为了使用这个结构体方便.
于是在声明变量的时候就可:SqList s;
如果没有typedef就必须用struct SqList c;来声明
这里的SqList实际上就是struct SqList的别名。

解释如下:

(可执行的代码)

#include <stdio.h>
#define MAXSIZE 20
typedef int ElemType;
typedef struct
{
    ElemType data[MAXSIZE]; /* 数组,存储数据元素 */
    int length;             /* 线性表当前长度 */
} SqList;
struct SqList
{
    ElemType data[MAXSIZE]; /* 数组,存储数据元素 */
    int length;             /* 线性表当前长度 */
};
int main()
{
    struct SqList c; //声明变量c
    c.data[1] = 10;
    c.length = 20;
    printf("%d,%d\n", c.data[1], c.length);
    printf("####################\n");
    SqList s;
    s.data[0] = 20;
    s.length = 30;
    printf("%d,%d\n", s.data[1], s.length);
    /*两者区别就在于:typedef是类型定义的意思。
    typedef struct{...}SqList;是为了使用这个结构体方便.
    于是在声明变量的时候就可:SqList s;
    如果没有typedef就必须用struct SqList c;来声明
    这里的SqList实际上就是struct SqList的别名。
    */
    return 0;
}

本人知识有限,难免会有错,写的也难免不够严谨,你若发现不对,或看了解释还不懂,欢迎在评论区提出。

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑桃鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值