当前位置: 首页 > news >正文

C语言基础知识08---链表

目录

链表

1.1 数据结构

1.2 链表分类

1.3 链表名词

1.4 函数名:malloc()

1.5 函数名字:free()

1.6 头插法&&尾插法


链表

1.1 数据结构

        线性结构 

                顺序表: 一对一 数组 

                链式表: 一对一 链表 

        非线性结构

                树结构: 一对多 树 

                网状结构:多对多 

        数据的逻辑关系+数据的物理存储+算法

1.2 链表分类

        单向链表

        双向链表

        循环链表

1.3 链表名词

        节点:每个存储单元 

                节点内部: 

                        数据域:存储信息的成员 

                        指针域:存储节点地址的指针 

        头节点:第一个节点,为了操作方便,数据域为空 

        尾节点:最后一个节点,指针域为 NULL 

        信息节点:存储数据的节点 

        头指针:保存头节点的地址

1.4 函数名:malloc()

        include <stdlib.h> 

        函数原型:void *malloc(size_t size); 

        函数功能:在堆区申请空间 

        函数参数: size: 空间大小 --- sizeof(数据类型)

        函数返回值:申请成功,返回空间地址 

        申请失败,返回 NULL

1.5 函数名字:free()

        函数原型:void free(void *ptr); 

        函数功能:释放空间

1.6 头插法&&尾插法

#include <stdio.h>

struct info{
    int class;
    char name[20];
    int id;
};
typedef struct node{
    struct info inf; // 数据域
    struct node * next; // 指针域
}Node;

/*Node * head = (Node *)malloc(sizeof(Node));
memset(head, 0, sizeof(Node));

head->next = (Node *)malloc(sizeof(Node));
memset(head->next, 0, sizeof(Node));*/

Node * Node_Creat(void)
{
    Node * new = NULL;
    new = (Node *)malloc(sizeof(Node));
    if(new == NULL)
    {
    perror(“malloc”);
    return NULL;
    }
    memset(new, 0, sizeof(Node));
    return new;
}

int main()
{
        Node *head = Node_Creat();
    if(head == NULL)
    {
        return 0;
    }
    while(1)
    {
        switch()
        {
            case 1: Node_Add(head);
                break;
        }
    }
        return 0;
}
    
void Node_Add(Node *head)
{
    Node * new = Node_Creat();
    if(new == NULL)
    {
        printf(“申请失败!\n”);
        return ;
    }
//头插法
new->next = head->next;
head->next = new;
//尾插法
Node *p = head;
while(p->next!=NULL)
{
    p = p->next;
}
p->next = new;
scanf(“%d”, &new->inf.class);
}

相关文章:

  • 考研复习之队列
  • [Lc_2 二叉树dfs] 布尔二叉树的值 | 根节点到叶节点数字之和 | 二叉树剪枝
  • 强大的AI网站推荐(第三集)—— AskO3
  • ffmpeg介绍
  • 【数据标准】数据标准化框架体系-对象类数据标准
  • 【原创首发】开源基于AT32 SIP/VOIP电话
  • 正交分析法 + Prompt Optimizer:五维复杂测试用例设计的终极指南**
  • 适配器模式 (Adapter Pattern)
  • SpringMVC的执行流程剖析和源码跟踪
  • Blazor+PWA技术打造全平台音乐播放器-从音频缓存到离线播放的实践之路
  • Jupyter Notebook 常用命令(自用)
  • Spring6:7 事务
  • [项目]基于FreeRTOS的STM32四轴飞行器: 十.检测遥控器
  • Day23: 数组中数字出现的次数
  • 免费Typora1.8.6安装教程
  • 操作系统WIN11无法出现WLAN图标(解决方案)
  • 链表题型-链表操作-JS
  • Android Compose 流式布局(FlowRow、WrapContent)源码深度剖析(十一)
  • 用 pytorch 从零开始创建大语言模型(六):预训练无标注数据
  • 使用AI一步一步实现若依(20)
  • 全国人大常委会关于授权国务院在中国(新疆)自由贸易试验区暂时调整适用《中华人民共和国种子法》有关规定的决定
  • 五一去哪儿|外国朋友来中国,“买买买”成为跨境旅游新趋势
  • 朝鲜海军新型驱逐舰进行首次武器系统测试
  • 马上评丨别让“免费领养”套路坑消费者又坑宠物
  • 今年一季度全国城镇新增就业308万人,就业形势保持总体稳定
  • 长三角议事厅·周报|长三角游戏出海,关键在“生态输出”