寒假数据结构学习Day1

今天初始了一下数据结构

1,了解时间复杂度和空间复杂度

        时间复杂度:程序执行次数是关于n的函数,就是看程序执行次数。

        空间复杂度:计算算法所需的储存空间,也就是定义了几个变量,内存大小。

时间复杂度和空间复杂度都需要拿大O阶的方法,有常数项,线性阶,平方阶。

        用常数1取代运行时间中的所有加法常数。

        在修改后的运行次数函数中,只保留最高项阶。

        如果最高阶项存在且不是1,则去除与这个项相乘的常数。

得到的结果就是大O阶

常见的时间复杂度

O(1) < O(logn) < O(n) < O(nlogn) < O(n2) < O(n3) < O(2n) < O(n!) < O(nn)

2,浅浅的学习了一下线性表

概念:零个或多个数据元素的有限序列

其存储结构有俩个

        a,顺序存储结构

                每个元素按顺序排序,就像数组一样。

        b,链式存储结构

                不按顺序但每个节点有下一个节点的地址,方便寻找。

学习线表和链表的时候发现c语言基础仍然有欠缺

        1,结构体自定义,和typedef运用不熟悉,见的代码有点少。

        2,动态内存管理欠缺比较严重,笼统学习了一下,对malloc,calloc,realloc,free,的运用有了较好的认识。

//线性表  用代码实现A = A U B
//线性表的线式存储结构
#include<stdio.h>
#include<stdlib.h>
#include<errno.h>
#define OK 1
#define ERROR 0
#define TRUE 1
#define FAlSE 0


typedef int ElemType;
typedef int Status;
typedef struct Node {
    Status data[100];
    int length;
} SqList;


Status GetElem(SqList L, int i, ElemType* e)  //将线性表L中第i个位置元素值返回给e
{
    if (L.length == 0 || i<1 || i>L.length)
        return ERROR;
    *e = L.data[i - 1];
    return OK;
}


Status ListInsert(SqList* L, int i, ElemType e)  //在线性表中插入数据
{
    int k;
    if (L->length == 100)
        return ERROR;
    if (i<1 || i>L->length + 1)
        return ERROR;
    if (i <= L->length)
    {
        for (k = L->length - 1; k >= i - 1; k++)
        {
            L->data[k + 1] = L->data[k];
        }
    }
    L->data[i - 1] = e;
    L->length++;
    return OK;
}


Status ListDelete(SqList* L, int i, ElemType* e)  //删除线性表第i的元素
{
    int k;
    if (L->length == 0)
        return ERROR;
    if (i<1 || i>L->length)
        return ERROR;
    *e = L->data[i - 1];
    if (i < L->length)
    {
        for (k = i; k < L->length; k++)
            L->data[k - 1] = L->data[k];
    }
    L->length--;
    return OK;
}

        3,指针的学习不太扎实,有些指针复杂了出现看不懂的情况,或是看错了,指针学习有待加强。

总结:今天主要是知识的学习,输入,对代码实操比较少,明天要加强对自主写代码的练习,还有就是题集中的题二分法,dfs 还是不太懂,也要找个视频去深度学习一下.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值