代码使用结构体:

typedef struct Node{int value;struct Node* next;
}*Link;

头插法:利用头指针控制链表节点的增加。

核心:
newNode->next = head->next;
head->next = newNode;

//头插法创建链表
Link headCreateLink(int n){//头指针初始化部分Link head,newNode;head = (Link)malloc(sizeof(struct Node));head->next = NULL;while(n--){newNode = (Link)malloc(sizeof(struct Node));scanf("%d",&newNode->value);// 主要核心,新节点指向头指针的下一节点,头指针指向新节点。newNode->next = head->next;head->next = newNode;}return head;
}

尾插法:需要借助一个辅助指针rear,指向当前链表最后一个节点,每次处理辅助指针指向的节点和新增的节点的关系即可。

核心:
newNode->next = rear->next;
rear->next = newNode;
rear = rear->next;

//尾插法创建链表
Link rearCreateLink(int n){//头指针初始化以及rear指针初始化指向头指针。Link head,rear,newNode;head = (Link)malloc(sizeof(struct Node));head->next = NULL;rear = head;while(n--){newNode = (Link)malloc(sizeof(struct Node));scanf("%d",&newNode->value);// 主要核心,新节点指向rear的下一节点,rear的下一节点指向新节点(顺序切记不可搞反),rear指向新节点。newNode->next = rear->next;rear->next = newNode;rear = rear->next;} return head;
}

测试时完整代码(可忽略)

#include<stdio.h>
#include<stdlib.h>typedef struct Node{int value;struct Node* next;
}*Link;Link headCreateLink(int n);
Link rearCreateLink(int n);
void print(Link head);
int main(){Link L1 = headCreateLink(5);Link L2 = rearCreateLink(5);printf("头插法:");print(L1);printf("尾插法:");print(L2);return 0;
}
Link headCreateLink(int n){Link head,newNode;head = (Link)malloc(sizeof(struct Node));head->next = NULL;while(n--){newNode = (Link)malloc(sizeof(struct Node));scanf("%d",&newNode->value);newNode->next = head->next;head->next = newNode;}return head;
}
Link rearCreateLink(int n){Link head,rear,newNode;head = (Link)malloc(sizeof(struct Node));head->next = NULL;rear = head;while(n--){newNode = (Link)malloc(sizeof(struct Node));scanf("%d",&newNode->value);newNode->next = rear->next;rear->next = newNode;rear = rear->next;} return head;
}
void print(Link head){Link link;if(head == NULL || head->next == NULL){printf("此链表为空!\n");return ;}link = head->next;while(link!=NULL){printf(" %d ",link->value);link = link->next;}printf("\n");
}

测试结果:

头插法和尾插法总结(动图版)相关推荐

  1. C语言的双向链表头插法和尾插法,指定节点删除

    文章目录 前言 头插法 尾插法 删除节点 测试代码如下 前言 双向链表和单链表的唯一区别就是多个一个指针域而已,该指针域可以访问链表的上一个节点. 关于构造双向链表的过程我们常见的有两种方法,和单链表 ...

  2. 计算机软件技术 上海电力学院,上海电力学院 计算机软件技术 实验三 用头插法和尾插法创建线性表...

    上海电力学院计算机软件技术实验三用头插法和尾插法创建线性表 #include #define MAXLEN 9 struct table {int key; int othererm; } ; typ ...

  3. 数据结构学习(二)——单链表的操作之头插法和尾插法创建链表

    http://blog.csdn.net/abclixu123/article/details/8210109 链表也是线性表的一种,与顺序表不同的是,它在内存中不是连续存放的.在C语言中,链表是通过 ...

  4. 头插法和尾插法创建链表(有无头结点)

    头插法和尾插法创建链表(有无头结点) 文章目录 头插法和尾插法创建链表(有无头结点) 1 头插法 1.1头插法建表规则: 1.2 头插法建表代码实现 2 尾插法 2.1 尾插法建表规则: 2.2 尾插 ...

  5. 单链表的头插法和尾插法c语言实现

    /*单链表的头插法和尾插法c语言实现*/ #include <stdio.h> #include <stdlib.h> #include <string.h> #d ...

  6. 采用头插法和尾插法建立单链表

    面说一下如果用C语言建立单链表,分为头插法和尾插法两种. 采用头插法建立单链表 该方法从一个空表开始,生成新结点,并将读取到的数据存放到新结点的数据域中,然后将新结点插入到当前链表的表头,即头结点之后 ...

  7. 头插法和尾插法的详细区别

    浅析线性表(链表)的头插法和尾插法的区别及优缺点 线性表作为数据结构中比较重要的一种,具有操作效率高.内存利用率高.结构简单.使用方便等特点,今天我们一起交流一下单向线性表的头插法和尾插法的区别及优缺 ...

  8. 双向循环链表的头插法和尾插法

    我们平常学链表的时候会学单向不循环链表,单向循环链表,双向不循环链表,双向循环链表及内核链表,各种格式的链表.今天我因为忘记双向循环链表的头插法和尾插法的顺序了,特意写一篇文章来巩固一下.首先我根据顺 ...

  9. 头插法和尾插法建立带头节点的单链表

    有两种方法建立单链表,尾插法和头插法,他们的区别是:头插法是按照输入元素倒序建立,为尾插法为顺序插入,并且多一个尾节点,我们一般使用尾插法. 一.头插法 代码为: pCurr -> next = ...

  10. c语言 链表建立头插法尾插法,单链表的创建(头插法和尾插法)

    单链表的创建分为头插法和尾插法,头插法是不断地向头结点插入新的结点.这样会使你所插入的结点值呈现逆序,所以头插法也可以实现单链表的逆置.尾插法是不断地向插入的新元素之后再插入新的元素.需要注意的是头插 ...

最新文章

  1. 东软信息学院java试题,东软Java笔试题答案
  2. 用putty中的pscp命令拷贝文件
  3. pvr波形是什么意思_PVR的完整形式是什么?
  4. 【医疗】疫情下的医院信息化短板如何补足?
  5. 在每趟长途的HTML5挑运之后
  6. (AirWatch 系列之一)企业移动计算的集大成者--Airwatch简介
  7. Python创建mat文件,打开mat文件
  8. JSON Funcs
  9. bzoj 2131: 免费的馅饼【dp+树状数组】
  10. Maven的下载、安装和配置
  11. docker打包部署flask镜像
  12. 微软MVP推荐《软件设计精要与模式(第2版)》
  13. 容器镜像相关项目 错误 分析步骤
  14. ORCAD中occurences 和 instances的区别
  15. 中级微观经济学:Chap 6 需求
  16. 如何解决WIN11系统在安装HyperV虚拟机,网络桥接后网络上传慢的问题
  17. php的swoole教程,PHP + Swoole2.0 初体验(swoole入门教程)
  18. 分子动力学(二)-成键相互作用
  19. 14-1 没名字
  20. 帕累托图(Pareto Diagram,排列图)

热门文章

  1. 非线性规划求解_突破 | 杉数求解器COPT首发求解内点法
  2. (整理)吊炸天的CNNs,这是我见过最详尽的图解!(上)
  3. 使用python将任意张图片拼接成多张大图
  4. 腾讯逆地址解析php,腾讯地图逆地址解析,通过经纬度获取详细的信息数据
  5. SAP License:SAP软件作用是什么
  6. 入门百度地图 JavaScript API
  7. errorCode 1045,state 28000: Access denied for user 'mysql'@'localhost' (using password: YES)
  8. 显示器颜色偏色的排查过程(偏黄、偏红、偏蓝、偏绿等)
  9. SpringBoot项目中配置文件敏感信息(数据用户名、密码)的加密
  10. [水]关于web地图