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

C语言单链表头插法

文章目录

  • 一.单链表
  • 二.头插法
  • 三.具体实现过程
  • 全部代码

一.单链表

  1. 什么是单链表?
    想象一串珍珠项链,每颗珍珠(节点)包含:
    数据域:存放具体数据(如数字、字符串)
    指针域:一根「看不见的线」指向下一颗珍珠

二.头插法

通俗理解单链表的「头插法」:像给火车加车厢一样简单

链表是数据结构中的「珍珠项链」,而头插法就是其中最常用的「穿珠手法」。用生活中的例子来理解:头插法就像在火车最前面加车厢,每次新节点都成为新的车头。 接下来用最直观的方式,手把手教你掌握这个核心操作。

三.具体实现过程

3.1用C语言的结构体表示:

// 定义链表节点结构体
typedef struct {
    ElemType data;
    struct Node* next;
} Node;

3.2 头指针的作用

类似「项链的扣头」,永远指向链表的第一个节点
链表为空时,头指针指向NULL

3.3步骤2:将新节点插入链表头部 关键操作:

让新节点的next指向原头节点
更新头指针指向新节点

    p->next = node->next;
    node->next = p;

模拟过程演示:

操作 图示
初始空链表 head → NULL
插入6 head → [6 NULL]
插入16 head → [16 →] → [6 NULL]
插入26 head → [26 →] → [16 →] → [6 NULL]

发现什么没?->先插入的数据反而在最后面去了.

全部代码

//
// Created by xiaoyuan on 2025-03-08.
//


#include "stdio.h"
#include "stdlib.h"
#define MAXSIZE 100
typedef int ElemType;

// 定义链表节点结构体
typedef struct {
    ElemType data;
    struct Node* next;
} Node;

Node *initList(){
    Node *head =(Node *) malloc(sizeof(Node));
    head->data = 0;
    head->next =NULL;
    return head;
}





void insertHead(Node *node,ElemType value){
    Node *p = (Node *) malloc(sizeof(Node));
    p->data = value;
    p->next = node->next;
    node->next = p;
    printf("插入数据成功\n");
}



void showList(Node *node){
    Node  *p = node->next;  //如果这里直接用Node就会打印0
    for(int i=0;p != NULL;i++){
        printf(" %d -> ",p->data);
        p = p->next;
    }

}

int main(){

    //1.初始化链表
    Node *node = initList();

    //2.头插法
    insertHead(node,6);
    insertHead(node,16);
    insertHead(node,26);
    showList(node);
}

相关文章:

  • 嘉立创:电子产业革新背后的隐形巨擘
  • C语言——【全局变量和局部变量】
  • 【智能体】本地安装Conda和搭建OpenManus环境
  • 人机共创:AI与人类编剧如何携手打造电影新纪元
  • 蓝桥备赛(13)- 链表和 list(上)
  • 第五章:go 的数据类型 及go语言拼接字符串有哪些方式
  • 百度移动生态事业群聚焦UGC战略,贴吧迎新调整
  • Scala 中生成一个RDD的方法
  • OmniGraffle Pro for Mac思维导图
  • 【运维篇】KubeSphere-02(经验汇总)
  • MySQL数据实时同步至Elasticsearch的高效方案:Java实现+源码解析,一文搞定!
  • CATIA V5 二次开发实战:Python实现零件实体智能转产品装配
  • 自行车的主要品牌
  • 深入解析 configService.addListener 使用中的注意事项
  • 【SpringMVC】SpringMVC的启动过程与原理分析:从源码到实战
  • OSError: [Errno 24] Too many open files
  • JDK 从 1.1 到 JDK 21 的变更与新特性
  • VSTO(C#)Excel开发3:Range对象 处理列宽和行高
  • three.js 在 webGL 添加纹理
  • 学习笔记:Python网络编程初探之基本概念(一)
  • 济南网站建设与维护/临沂seo推广外包
  • 政府网站模板免费下载/成都业务网络推广平台
  • 杭州全网推广/网站整站优化
  • 做网站老师/网络促销策略
  • ps做网站首页怎么/免费外链网站seo发布
  • 链接网站怎么做/百度搜索关键词排名查询