5.14 算法

今天没有刷力扣。看了算法笔记中链表那块。对链表的使用我还是蛮薄弱的,要加强。

我才知道还有静态链表。静态链表就是用结构体数组来存储链表,不用动态分配节点内存。节点的地址就是数组的下标。

1.动态链表:

一般节点定义如下:

struct Node{

int data;

Node * next;

};

动态分配节点内存:

malloc:

typename *p=(typename*) malloc(sizeof(typename));

new:

typename *p=new int;

typename *p=new int[100];

释放内存:动态分配内存后,为了防止内存泄漏应该及时释放内存。

free(p):与malloc搭配使用。先释放内存,然后将p指向NULL

delete p/delete [] p :与new 搭配使用,效果与free()相同。

链表的基本操作:创建,查找,插入,删除。

一般都有头节点指向链表的第一个节点,头节点数据域为空。

2.静态链表

结点定义方式:

struct Node{

        int data;

int next;

}node[size];

静态链表题目的模板
1、定义

struct Node{

int address;

typename data;

int next;

xxx;//节点的某个性质

}node[size];

2、初始化

一般来说,需要对定义中的xxx进行初始化,将其定义为正常情况下达不到的数字

for(int i=0;i<maxn;i++)

{

node[i].xxx=0;
}

3、一般题目都会给出首结点地址,根据首结点遍历得到整条链表。

int p=begin,count=0;

while(p!=-1)   //-1代表链表结束

{

xxx=1;

count++;   //count为链表的结点个数

p=node[p]->next;
}

4、可能题目给出的结点不都是有效的,一般需要对数组排序将有效结点移到数组左端,然后用步骤3得到的count来访问。

总结:利用好时间,不能摸鱼,多敲,加油。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值