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

动态创建链表(头插法、尾插法)

今天我们来学习动态创建链表!!!

动态创建链表:分为头插法和尾插法

头插法(动态创建):

头插法就是让新节点变成头

代码如下

                           

        吐血了:这边有个非常重要的知识点,这边第三个if这里一定要将new->next初始化为NULL,因为这个if的条件就是当这个head为NULL,new做头的时候,所以此时传过来的new就是做头的,就只有它这一个,没有下一个,所以如果不初始化new里面的next的话,那么就会发生未定义的行为,就是个野指针,那么在遍历的时候,由于new->next没有初始化就会发生未定义的行为,就会发生死循环且是看不懂的循环比如:

非常的可怕!差点给我吓晕了

      但是在Linux的虚拟机上面运行又不会出现这样的情况,因为windows和Linux的一些库和处理方式的不同吧,但是还是要加上new->next = NULL,这样才符合逻辑。

头插法代码

#include <stdio.h>
#include <stdlib.h>
struct Test
{
    int data;
    struct Test *next;
};

struct Test *insertDataBeforeHead(struct Test *head)
{
    struct Test *new = NULL;
    while(1){
        new = (struct Test *)malloc(sizeof(struct Test));
        if (new == NULL)
        {
            printf("内存分配失败\n");
            return head;
        }
        printf("请输入data\n");
        scanf("%d",&(new->data));
        if(new->data == 0){
            printf("0 quit\n");
            return head;
        }
        if(head == NULL){
            head = new;
            new->next = NULL;//太关键了这个
        }else{
            new->next = head;
            head = new;
        }
    }
    return head;
}

void printfInfo(struct Test *head)
{
    struct Test *point;
    point = head;
    while(point !=NULL){
        printf("%d ",point->data);
        point =point->next;
    }
    putchar('\n');

int main()
{
     struct Test *head = NULL;
     head = insertDataBeforeHead(head);
     printfInfo(head);

     return 0;
}

demo如上各位友友们,尽情享受......

明天学习头插法的优化补充!

相关文章:

  • Oracle链接服务器导致SQL Server异常终止
  • 相机的方向和位置
  • 波特五力分析——AI与思维模型【99】
  • 软件工程之软件项目管理深度解析
  • The 2024 ICPC Kunming Invitational Contest G. Be Positive
  • 人工智能 机器学习期末考试题
  • 8.1.Kubernetes进阶
  • 事务失效的场景
  • 【推荐笔记工具】思源笔记 - 隐私优先的个人知识管理系统,支持 Markdown 排版、块级引用和双向链接
  • Swagger 3.0 中注解详细示例
  • 【计算机网络-传输层】传输层协议-TCP核心机制与可靠性保障
  • ai break down 带有#和t=的路由
  • 《探索React Native社交应用中WebRTC实现低延迟音视频通话的奥秘》
  • 从 Qwen-3 发布看 AI 服务器选型新方向:硬件配置与成本优化策略
  • 大数据狙击金融欺诈——技术如何守护交易安全?
  • 成龙电影中的三菱汽车
  • VUE2课程计划表练习
  • LeetCode 3342.到达最后一个房间的最少时间 II:dijkstra算法(和I一样)
  • Linux 系统无法启动的排查与修复方案
  • C#黑魔法:鸭子类型(Duck Typing)
  • 道指跌逾100点,特斯拉涨近5%
  • 匈牙利外长称匈方已驱逐两名乌克兰外交官
  • 新修订的《婚姻登记条例》明起施行,领证不用户口本了
  • 习近平出席俄罗斯纪念苏联伟大卫国战争胜利80周年庆典
  • 独家丨刘家琨获普利兹克奖感言:守护原始的感悟力
  • 上海交大:关注到对教师邵某的网络举报,已成立专班开展调查