学习笔记——C语言基本概念&链表——(12)

在介绍链表之前先介绍一下数据结构的分类:

线性结构:数组,链表,栈,队列

顺序结构:数组

链式结构:链表

非线性结构:树,二叉树

1、链表

特点:利用碎片化空间。

链表组成:由节点组成

节点组成:

数据域--真正要存放的数据

指针域--下一个节点的地址

节点的定义:

第一种: 直接定义

struct NODE
{
    char name[32];
    int id;
    float score;
    struct NODE *addr; //下一个节点的地址
};


第二种:
先定义数据域, 再定义节点

//定义数据域
struct Stu
{
    char name[32];
    int id;
    float score;
};
//定义指针域
struct NODE
{
    struct Stu stu; //数据域
    struct NODE *addr;//指针域, 下一个节点的地址
}

回顾一下指针的定义:

1>int *p = NULL;
2>int num = 100; int *p=#
3>char buf[32]={0}; char *p=buf;
4>char *p = “hello”;

由链表的引入又有了新的指针定义:
1》 malloc函数 -- 开辟空间

头文件:#include <stdlib.h>

void *malloc(size_t size);
形参: size -- 要开辟空间的大小
返回值:
成功: 返回开辟好的空间的首地址, void * -- 万能指针, 可以随意的强转为你想要的
类型
失败: NULL
int *p = (int *)malloc(sizeof(int));

2》 void free(void *ptr);
        形参: 要释放的空间的首地址;
        返回值: void -- 无返

3》 memset -- 内存清理函数
        #include <string.h>
        void *memset(void *s, int c, size_t n);
        形参: s -- 你要清理的空间的首地址
        c -- 0
        n -- 清多大, sizeof
        返回值: 就是第一个参数

2、双向链表

组成:节点--数据域和指针域(存放上一个和下一个节点的地址)

定义格式:

struct Stu
{
    char name[32];
    int id;
    float score;
};
struct NODE
{
    struct Stu stu; //数据域
    struct NODE *front; //指针域, 上一个节点的地址
    struct NODE *next; //指针域, 下一个节点的地址
}

图示:

循环链表:
单向循环
双向循环

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值