【数据结构】01数据结构基础

[视频链接](https://www.bilibili.com/watchlater/#/av53135620/p4

一、基本类型

1. 数据类型

int float char short

2. 指针型

指针型:存放变量地址的变量类型

 int *p1 = &A;//为什么定义一个int型指针变量?因为指针不是通用的,指针只能指向和所指针定义的同类型的变量
 char *p2 = &B;
 float *p3 = &C;

NULL 是不指向任何地址的特殊标记,其值为0.初始化指针的时候常用,如 int *p4 = NULL;

3. 构造类型

  1. 数组:把相同类型的变量排成一列所构成的变量集
    int A【100】;//长度为100,存储范围0~99

  2. 结构体:将不同类型变量组合在一起来解决问题
    结构体声明并没有创建一个实体对象,它只是描述了一种数据类型,勾勒出数据该如何存储,类似于int char等,因此我们也叫它模板

    结构体的两种定义方法

    typedef struct {
        int a;
        float b;
        char c;

    }structNodeA;//封号不能少,结构体声明相当于一个语句
	
	//结构体内部有一个指向本身的指针
    typedef struct structNodeB{
        int a;
        double b;
        char c;
        struct structNodeB *d;//

    }structNodeB;

typedef是什么意思?

4. void

在考研数据结构中,主要用来定义没有返回值的函数
break 和 continue 的区别?
只能在循环体内和switch语句体内使用break
Break结束整个循环,continue结束当前循环,跳到下一步循环

二、函数

	返回值类型 函数名(参数定义列表){
       
    };

调用方法:函数名(参数列表);

	 int add(int a,int b){
	        return a+b:
	 }
	 answer = add(1,2);
     void F(){
            //只需要这个函数的功能
     }

调用:F();

     int result = 0;
     void getResult(int r){
        ++r;
     }
     getResult(result);

result的值不会发生变化
‼️过程:result的值赋给r,然后r进行自增操作,改变的是r的值而不是result的值
如果想对result(而不是r)直接进行操作,我们应该使用参数的引用型符号&,可以实现 函数对传入的变量进行改变,并且在函数执行之后,在变量中直接得到改变后的结果,需要把其对应的参数定义成引用型

    int result = 0;
    void getResult(int &r){
        ++r;
    }

    getResult(result);

‼️换句话说,如果想用函数直接对某一个变量进行操作,而不是对这个变量的复制品进行操作,需要把变量对应的参数定义成引用型

上述引用型是针对基本类型变量的,如果传入的参数是一个指针,并且要对指针本身进行操作,也就是我们要定义一个指针类型的引用型参数

    int *p = NULL;
    void getA(int *&p){
        ...
        p = q;
        ...
    }
    getA(p);

三、数据结构

1. 逻辑结构:对元素间的关系的描述

  1. 没关系 集合
  2. 一对一 线性表 线性结构 元素排列成线
  3. 一对多 树 树形结构 分支
  4. 多对多 图 图形结构

2. 存储结构

  1. 顺序结构
  2. 链式结构
    typedef struct LNode(){
    	int data;
    	struct LNode *next;
    }LNode;
    
    LNode *L;//定义一个叫L的指针
    L = (LNode *)malloc(sizeof(LNode));
    //节点空间动态分配:malloc根据指定定义一个合适大小的存储空间,并且返回这个空间的地址
    // 为结构类型为LNode的分配存储空间
    
```

箭头符号?

随机存取 random access(应该翻译成任意存取)
顺序存储结构支持随机存取,可以瞬间推算出任意一个节点的地址

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值