单链表的头插法 尾插法----期末复习2

对于头插法与尾插法创建单链表的示意图:

### 头插法

初始为空链表:
```
L -> NULL
```
每次插入一个节点,如插入节点3:
```
L -> |3| -> NULL
    ^       L
```
接着插入节点2:
```
L -> |2| -> |3| -> NULL
    ^       L
```
继续插入,直到形成:
```
L -> |1| -> |2| -> ... -> |n| -> NULL
    ^                        L
```

代码实现(头插法)

typedef int ElemType;    //便于后期的修改 
 
//定义结点类型 
typedef struct Node {
    ElemType data;              //单链表中的数据域 
    struct Node *next;          //单链表的指针域 
}Node,*LinkedList;

2.单链表的创建
    //单链表的建立(头插法)
    
    LinkedList ListCreatH() {
        Node *L;
        L = (Node *)malloc(sizeof(Node));   //申请头结点空间
        L->next = NULL;                      //初始化一个空链表
        int i=0;
        ElemType x;                         //x为链表数据域中的数据
        while(i<10) {
            Node *p;
            p = (Node *)malloc(sizeof(Node));    //申请新的结点 
            scanf("%d",&x);
            p->data = x;                     //结点数据域赋值 
            p->next = L->next;                    //将结点插入到表头L-->|2|-->|1|-->NULL 
            L->next = p; 
            i++;
        }
        return L; 
    } 
     
     
  
 

### 尾插法

初始为空链表:
```
L -> NULL
```
每次插入一个节点,如插入节点3,并保持 `r` 指向当前末尾:
```
L -> |3| -> NULL
     r      L
```
接着插入节点2,`r` 移动到节点3之后:
```
L -> |3| -> |2| -> NULL
       r     L
```
继续插入,直到形成:
```
L -> |1| -> |2| -> ... -> |n| -> NULL
          r              L
```
在尾插法中,`L` 始终指向头结点,而 `r` 随着插入过程不断更新,始终保持指向当前最后一个节点。

>>>>>>>

 //单链表的建立(尾插法)(注:比较常用)
     
    LinkedList ListCreatT() {
        Node *L;
            L = (Node *)malloc(sizeof(Node));   //申请头结点空间
            L->next = NULL;                  //初始化一个空链表
             Node *r;
              r = L;                          //r始终指向终端结点,开始时指向头结点 
            int i=0   ;                   //x为链表数据域中的数据
            for(i=0;i<10;i++)
            {         
                Node *p;
                p = (Node *)malloc(sizeof(Node));   //申请新的结点 
                scanf("%d",&p->data);
                r->next = p;                 //将结点插入到表头L-->|1|-->|2|-->NULL 
                r = p;                         //将r结点移动到最后一个节点
            }
            r->next = NULL;                  //让r结点的指针域置空(链表创建完成)
            return L; 
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/851556.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

万兴优转 v15 解锁版安装教程(全能音视频格式转换器)

前言 Wondershare UniConverter&#xff08;万兴优转&#xff09;国产全能音视频格式转换器。万兴格式转换器具有音视频格式转换、合并视频、视频压缩、视频编辑、视频录制、下载视频、元数据修复、VR视频转换、字幕编辑器、GIF制作、DVD刻录等一站式视频工具箱功能。万兴转换…

程序员如何转行成为一个漫画自媒体-连载3

与漫画师的初步合作几期之后&#xff0c;在相互间的沟通中&#xff0c;我尽我所能以让漫画师的工作更加顺畅。 比如我逐步完善的漫画文案模板主要包括以下几点&#xff1a; ① 按照场景划分单元&#xff0c;每个场景包含“场景描述”&#xff08;尽可能清晰地描绘场景细节&am…

数新网络签单国泰君安:利用数据服务平台提升金融业务用数能力

近日&#xff0c;数新网络与国泰君安证券股份有限公司&#xff08;以下简称“国泰君安”&#xff09;达成了数据服务平台升级项目的签约。这一项目的推进将更好地服务于国泰君安内部业务部门的数据需求&#xff0c;帮助数据平台更加有效地实现提升业务响应效率的目标&#xff0…

Nvidia/算能 +FPGA+AI大算力边缘计算盒子:AI智能监控 用于沙滩救援

以色列的一个团队在人工智能领域取得的成果引起了轰动。 今天他们取得的成果源于多年前的一个想法。Netanel Eliav 和 Adam Bismut 是校园时代的旧伙伴&#xff0c;当时他们想要解决一个可以改变世界的问题&#xff0c;由此引出这样一个想法&#xff1a;溺水的 Bismut 漂流到死…

【数据分析基础】实验二 Python程序流程控制、函数设计与使用

实验目的 熟悉选择结构嵌套时代码的缩进与对齐。理解带 else 子句的循环结构执行流程和条件表达式 value1 if condition else value2 的用法。熟悉使用循环和异常处理机构对用户输入进行约束的用法。掌握Python程序中进行选择、循环流程控制的语句、语法&#xff0c;熟练运用选…

SpringAI--使用免费API-Key和API进行配置

目录 &#x1f4da; 前言 &#x1f4d1;Spring AI简介 &#x1f4ac; 项目配置 &#x1f4da; 系统功能的具体实现 &#x1f4ac; 编写Controller控件 &#x1f4da; 前言 &#x1f4d1;博客主页&#xff1a;丘比特惩罚陆 &#x1f496;欢迎关注&#xff1a;点赞收藏⭐留言✒…

【Vue】getters

除了state之外&#xff0c;有时我们还需要从state中筛选出符合条件的一些数据&#xff0c;这些数据是依赖state的&#xff0c;此时会用到getters getters就类似于属性中的计算属性 这个getter只有获取&#xff0c;如果需要设置修改&#xff0c;还是需要经过mutations getters里…

C++网络编程基础

文章目录 协议局域网通信IP 地址网络通信的本质tcp 和 udp 协议网络字节序网络主机数据转化接口 协议 协议&#xff1a;收到数据后&#xff0c;多出来的那一部分&#xff0c;也叫一种 “约定”&#xff0c;一整套的自硬件到软件&#xff0c;都有协议&#xff0c;需要有人定制&a…

如何使用Python在word文档中创建表格

如何使用Python在word文档中创建表格 介绍效果代码 介绍 本文将介绍如何使用Python库python-docx在Word文档中创建表格。 效果 插入表格前的word文档&#xff1a; 插入表格后的word文档&#xff1a; 代码 from docx import Document# 加载现有的Word文档 doc Document(…

重新学习STM32(1)GPIO

概念简介 GPIO 是通用输入输出端口的简称&#xff0c;简单来说就是 STM32 可控制的引脚。STM32 芯片通过 GPIO 引脚与外部设备连接起来&#xff0c;从而实现与外部通讯、控制以及数据采集的功能。 GPIO被分成很多组&#xff0c;比如 GPIOA和GPIOB等。所有的 GPIO引脚都有基本的…

C语言期末概念题100道

花括号“{”和“}”只能作为函数体的定界符 F。花括号不仅可以作为函数体的定界符&#xff0c;还可以用于其他块结构&#xff0c;如控制语句&#xff08;if、while、for等&#xff09;和复合语句。 C程序中的每行只能写一条语句 F。C语言中每行可以包含多条语句&#xff0c;只需…

【护网简历模版】改了10个在校大学生的简历的感想

护网简历模版 吉祥学安全知识星球&#x1f517;除了包含技术干货&#xff1a;Java代码审计、web安全、应急响应等&#xff0c;还包含了安全中常见的售前护网案例、售前方案、ppt等&#xff0c;同时也有面向学生的网络安全面试、护网面试等。 在上篇文章中&#xff1a;如何面试…

前端JS必用工具【js-tool-big-box】学习,获取当前浏览器向上滚动还是向下滚动,获取当前距离顶部和底部的距离

这一小节&#xff0c;我们说一下 js-tool-big-box 添加的最新工具方法&#xff0c;在日常前端开发工作中&#xff0c;如果网页很长&#xff0c;我们就需要获取当前浏览器是在向上滚动&#xff0c;还是向下滚动。如果向上滚动&#xff0c;滚动到0的时候呢&#xff0c;需要做一些…

Linux网络命令——netstat

netstat是Linux系统中非常有用的网络工具&#xff0c;被称为是网络监控中的军工刀&#xff0c;足见其地位。 传统上&#xff0c;它用于问题确定而不是性能测量&#xff0c;但是也可用于查看网络上的流量&#xff0c;以确定性能问题是否由于网络阻塞引起。 netstat用于显示与I…

建筑二建考试试题及答案,分享几个实用搜题和学习工具 #微信#经验分享

大学生必备的搜题工具&#xff0c;专业课本习题、电子版教材、考研资料、英语四六级等考试题目也能一并搜索&#xff0c;每道题目都有详细的讲解&#xff0c;每个都堪称大学神器。 1.掌上识别王 一个可以快速纸质书籍上内容扫描成电子档的工具&#xff0c;为了方便大家快速搜…

好用的Web数据库管理工具SQLynx

SQLynx 是一款功能强大且用户友好的 Web 数据库管理工具&#xff0c;原生支持个人和企业用户&#xff0c;专为简化数据库管理和操作而设计。 目录 1 主要特点 2 优势 3 典型使用场景 4 示例 5 结论 SQLynx原名SQL Studio&#xff0c;产品100%自主研发&#xff0c;无任何开…

OSI七层网络参考模型

一、物理层 我们要发送出去的数据在计算机里只不过是无数的0和1&#xff0c;0或1就叫做比特&#xff0c;物理层就是把这些比特用不同的媒介传输出去&#xff0c;可以用电、光或者其他形式的电磁波来表示和传输信号&#xff0c;数据从网络接口出去以后&#xff0c;会经过不同的网…

dat.gui图形用户页面

一、导入 1.npm安装 npm install --save dat.gui 引入&#xff1a; // CommonJS: const dat require(dat.gui); // ES6: import * as dat from dat.gui; const gui new dat.GUI(); 二、控制器 <!DOCTYPE html> <html lang"en"> <head><…

【重磅开源】MapleBoot权限控制使用介绍(菜单权限、按钮权限、数据权限)

基于SpringBootVue3开发的轻量级快速开发脚手架 ## &#x1f341;项目简介 一个通用的前、后端项目模板 一个快速开发管理系统的项目 一个可以生成SpringBootVue代码的项目 一个持续迭代的开源项目 一个程序员的心血合集 度过严寒&#xff0c;终有春日&#…

Spring (50)Ribbon

Netflix Ribbon是一个客户端负载均衡器&#xff0c;它提供了一系列完善的配置项&#xff1a;如连接超时、重试、负载均衡策略等。在微服务架构中&#xff0c;Ribbon通常被用于调用其它服务&#xff0c;通过负载均衡选择一个最佳的服务实例进行交互。Spring Cloud将Ribbon整合在…