目录

1.链表的增删查需要注意的一些易错点:

2.头插法(动态):

3.尾插法(动态):


1.链表的增删查需要注意的一些易错点:

链表增删查改超详细博客,还附带图画

https://www.cnblogs.com/yellowgg/p/8058857.html#top

尾插法(动态创建)--视频
https://www.bilibili.com/video/BV1x7411R7pt

头插法(动态创建)--视频
https://www.bilibili.com/video/BV157411Z7dc/?spm_id_from=333.788.recommend_more_video.-1

  1. 对于链表的使用,要时时刻刻注意头节点,如果头节点发生变化,返回的值错误,则链表会出错。
  2. 对于新节点的插入连接,连接顺序绝对不能乱。
  3. 删除节点,新增节点的话,则需要注意,是否有malloc开辟的空间被遗弃,有的话,要free掉。因为节点被遗弃成了无用节点后,内存中就多了它这个垃圾。

下面是从中间插入节点连接图:

2.头插法(动态):

特点:

1.1每一次添加的新节点就是一个新的链表头。

1.2数据的遍历是从输入的最后一个读起。

#include <stdio.h>
#include <stdlib.h>struct Link
{int data;struct Link *next;
};void printLink(struct Link* head)
{struct Link* p = head;while(p != NULL){printf("%d ",p->data);p = p->next;}  putchar('\n');
}struct Link* insertFromHead(struct Link *head,struct Link *new)    //真正的插入
{  if(head == NULL){head = new;return head;}else{new->next = head;head = new;}  return head;
}struct Link* createLink(struct Link *head)    //创建链表
{struct Link *new = NULL;while(1){printf("input your new node data:\n");new = (struct Link*)malloc(sizeof(struct Link));scanf("%d",&(new->data));if(new->data == 0){printf("0 quit\n");free(new);              //如果第一次输入数据为0,则新节点new,malloc的空间没用,则free掉return head;}head = insertFromHead(head,new);       }
}int main()
{struct Link *head = NULL;head = createLink(head);printLink(head);    //打印链表  return 0;
}

3.尾插法(动态):

特点:

1.1要先遍历到最后一个,才接新节点。

1.2数据的遍历是从输入的第一个读起。

#include <stdio.h>
#include <stdlib.h>struct Link
{int data;struct Link *next;
};void printLink(struct Link* head)
{struct Link* p = head;while(p != NULL){printf("%d ",p->data);p = p->next;}  putchar('\n');
}struct Link* insertFromBehind(struct Link *head,struct Link *new)    //真正的插入
{ struct Link *p = head; if(p == NULL){head = new;return head;}while(p! =NULL){    p = p->next;}p->next = new;return head;
}struct Link* createLink(struct Link *head)    //创建链表
{struct Link *new = NULL;while(1){printf("input your new node data:\n");new = (struct Link*)malloc(sizeof(struct Link));scanf("%d",&(new->data));if(new->data == 0){printf("0 quit\n");free(new);            //如果第一次输入数据为0,则新节点new,malloc的空间没用,则free掉return head;}head = insertFromBehind(head,new);       }
}int main()
{struct Link *head = NULL;head = createLink(head);printLink(head);    //打印链表return 0;
}

C语言:链表(动态)创建之头插法和尾插法相关推荐

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

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

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

    概念: 单链表的建立: 头插法:元素插入在链表的头部,也叫做前插法. 尾插法:元素插入在链表的尾部,也叫做后插法. 头插法: 方法1: 步骤: 1)创建一个空链表(含头结点) 2)再创建一个需要插入的 ...

  3. 不带头结点的单链表的创建(头插法和尾插法)

    1.用头插法建立不带头结点的单链表 #include<iostream> using namespace std;//单链表的结构体 typedef struct Node {int da ...

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

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

  5. java实现单链表的建立(头插法和尾插法)

    单链表 单链表(Single Linked List): 单链表是一种链式存取的数据结构,用一组地址任意(可能连续,也可能不连续)的存储单元存放线性表中的数据元素. 链表中的数据是以结点来表示的,每个 ...

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

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

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

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

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

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

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

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

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

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

最新文章

  1. form表单序列化去除空值
  2. GitHub服务中断24小时11分钟事故分析报告\n
  3. 就业技术书文件表格_Word格式:工程预结算工作流程图及工作表单,附20余表格...
  4. RedHat Enterprise Linux6.4 使用CentOS yum源
  5. python 财务报表审计_python 自动化审计
  6. WORD 粘贴代码 不检查语法
  7. appium java简单实例_Appium创建一个Note的实例
  8. 计算机视觉三大顶级会议ICCV,CVPR,ECCV网址
  9. MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结
  10. 九度OJ 1005 Graduate Admission
  11. 如何输入一个整数逆序输出_如何理解运算放大器的共模输入和输出摆幅限制?...
  12. JS获取当前时间戳的方法
  13. jdk Integer 具体实现
  14. 计算机网络基础问题总结
  15. Turtlebot2激光雷达(Rplidar)gmapping构建地图
  16. 软件工程团队项目——搜查令
  17. Jquery点击切换播放不同的Flv视频文件
  18. iOS 使用HealthKit框架实现获取今日步数
  19. yum命令执行卡住不能退出
  20. uni-app swiper实现公告栏上下循环滚动(整理)

热门文章

  1. 魔兽世界单机(芒果3.3.5a)机器人操作命令大全
  2. pdf合并 java_用Java拆分及合并PDF文档
  3. STM32F103+RTT从零开始(二)——RTT系统中点亮LED
  4. 对勾和叉怎么打_方框里打钩和叉符号怎么输入?N种方法,总有一种适合你!-word里面怎么打勾...
  5. Java-Swing编程介绍
  6. CFSSL: 证书管理工具:4:生成Kubernetes集群证书
  7. win10下cygwin安装
  8. 一起用Python做个自动化弹钢琴脚本,我竟然弹出了《天空之城》!
  9. 4.3 齐次线性方程组
  10. 在MySQL中设计新闻网站_基于MySQL新闻搜索引擎的设计与实现