文章目录
- 一.单链表
- 二.头插法
- 三.具体实现过程
- 全部代码
一.单链表
- 什么是单链表?
想象一串珍珠项链,每颗珍珠(节点)包含:
数据域:存放具体数据(如数字、字符串)
指针域:一根「看不见的线」指向下一颗珍珠
二.头插法
通俗理解单链表的「头插法」:像给火车加车厢一样简单
链表是数据结构中的「珍珠项链」,而头插法就是其中最常用的「穿珠手法」。用生活中的例子来理解:头插法就像在火车最前面加车厢,每次新节点都成为新的车头。 接下来用最直观的方式,手把手教你掌握这个核心操作。
三.具体实现过程
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就会打印0for(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);
}