单链表的使用方法.数据结构(三)[上]

article/2025/9/20 10:47:27

前言

提示:文本为数据解构(三)单链表:

本文具体讲解单链表的具体使用方法


提示:以下是本篇文

系列文章目录

第一章 数据解构(一)

第二章 顺序表的具体使用方法.数据解构(二)


文章目录

前言

系列文章目录

文章目录

一、单链表视图

二、单链表使用方式

1.定义一个结构体

2.初始化

3.扩容

4.尾插

5.尾减

 方法一(笨方法):

方法二:

三.总结

6.头加

7.头减

8.打印


提示:以下是本篇文章正文内容,下面案例可供参考

回顾上文说到

顺序表的使用方法

由于顺序表的缺点:

  1. 空间不够,需要扩容,扩容后有的扩容空间用不到,浪费空间.
  2. 插入数据或移动数据,删除数据都会有消耗.

所有有了单链表

单链表的优势:

  1. 按需来扩容,不多不少刚刚好,不用就释放,合理使用空间.
  2. 从头插入数据不需要挪动数据,美滋滋(不浪费空间).

单链表的缺点:

  1. 每一个数据都需要用指针去访问每一个节点.
  2. 不支持“点名访问”就像数组访问一样访问下标.

一、单链表视图

图片如下(示例):

 

二、单链表使用方式

1.定义一个结构体

代码如下(示例):

#include <stdio.h>
#include <stdlib.h>
typedef int SLDataType;//SLDataType
typedef struct Link_List
{SLDataType data;//存储值struct List* next;//存储下一个地址
}List;

SLDataType data;//存储值
    struct List* next;//存储下一个地址

2.初始化

代码如下(示例):

List* str=NULL;

为一个空,主要目的为在极端可能的情况,如:头插,尾插时没有节点.

3.扩容

增容的目的是为了在输入数据时有可用空间,不多不少刚刚好

 代码如下(示例):

//增容
List* SListAdd(SLDataType x)
{List* newlist = (List*)malloc(sizeof(List));if (newlist == NULL){//增容失败直接返回return;}newlist->data = x;newlist->next = NULL;return newlist;
}

4.尾插

 代码如下(示例):

//尾插
void SListPushBack(List** pplist, SLDataType x)
{//增加可以模块化/*List* newlist = (List*)malloc(sizeof(List));newlist->data = x;newlist->next = NULL;*/List* newlist = SListAdd(x);//创建一个新的节点if (*pplist==NULL)//判断是否有节点{//没有就把newlist给pplist*pplist = newlist;}else{//有,就找尾(null)List* tali = *pplist;//把pplist的地址给taliwhile (tali->next!=NULL){tali = tali->next;}//把newlist的地址给尾巴tali->next = newlist;}
}

5.尾减

 代码如下(示例):

 方法一(笨方法):

//尾删
void SLPopback(List** pplist)
{if (*pplist == NULL){return;}//判断是否只有一个节点if ((*pplist)->next==NULL){//如果是直接释放free(*pplist);*pplist = NULL;}else{List* Front = *pplist;//保存倒数第2个的List* hate = *pplist;//不断增加的while (hate->next !=NULL){hate = hate->next;if (hate->next == NULL){Front->next = NULL;break;}if (hate->next != NULL){Front = hate;}}free(hate);hate = NULL;}
}

方法二:

//尾删
void SLPopback(List** pplist)
{if (*pplist == NULL){return;}if ((*pplist)->next==NULL){free(*pplist);*pplist = NULL;}else{List* Prev = *pplist;//保存倒数第2个的List* tail = *pplist;//不断增加的while (tail->next !=NULL){Prev = tail;tail = tail->next;}free(tail);tail = NULL;Prev->next = NULL;}
}

三.总结

其实方放逻辑是一样的:

如图:

6.头加

思路:(修改一下是2值的地址1

 

 代码如下(示例):

//头插
void SLPoshFront(List** pplist, SLDataType x)
{List* newList = SListAdd(x);newList->next = *pplist;*pplist = newList;
}

7.头减

 代码如下(示例):

//头删
void SLPopFront(List** pplist)
{if (*pplist==NULL){return;}else{List* newlist=*pplist;free(*pplist);*pplist = newlist->next;}
}

8.打印

 代码如下(示例):

//打印
void SLPrintf(List* plist)
{List* LSfirst = plist;while (LSfirst!=NULL)//判断是否有下一个节点{printf("%d", LSfirst->data);//打印当前节点的值LSfirst = LSfirst->next;//寻找下一个节点}printf("\n");
}

 while (LSfirst!=NULL)//判断是否有下一个节点
    {
        printf("%d", LSfirst->data);//打印当前节点的值
        LSfirst = LSfirst->next;//寻找下一个节点
    }


http://chatgpt.dhexx.cn/article/k19wJKUW.shtml

相关文章

Linux设置ssh免密登录

目录 1.在/root目录下输入命令 2.进入.ssh目录 3.将公钥id_rsa.pub写入到一个认证文件夹中 4.开启远程免密登录配置 5.免密远程登录本机 1.在/root目录下输入命令 [rootlocalhost ~]# ssh-keygen -t rsa -P "" Generating public/private rsa key pair. Enter …

Linux SSH 免密登录

Linux SSH 免密登录 本篇我们来 看看 Linux 的免密登录的原理 以及实际操作一番 概述 什么是 Linux SSH 免密登录&#xff0c;我觉得大家应该都 多少听过 或者操作过&#xff0c;那你真的理解整个免密登录的过程吗&#xff1f; Linux SSH 免密登录 就是 可以不输入密码 就可以…

SSH登录和SSH免密登录

在了解ssh的时候产生了概念混淆&#xff0c;发现ssh登录和ssh免密登录是两码事。 可以从目的和过程对比这两个概念&#xff1a; 1.目的 1.1 SSH登录 简单来说就是&#xff1a;建立客户端和服务器之间安全的远程连接&#xff0c;登录远程服务器&#xff0c;以访问文件系统 。…

VSCode——SSH免密登录

文章目录 本地PC端&#xff08;一般为Windows&#xff09;1. 检查自己是否已经生成公钥2. 配置VScode的SSH config 远程服务器端1. 服务器新建授权文件2. 赋权限3. 重启远程服务器的ssh服务 最全步骤&#xff1a;【设置ssh免密不起作用&#xff1f;彻底搞懂密钥】vscode在remot…

SSH免密登录功能配置

文章目录 一、SSH免密登录功能配置&#xff08;1&#xff09;master虚拟机免密登录master虚拟机&#xff08;2&#xff09;将公钥拷贝到所创建的虚拟机上 一、SSH免密登录功能配置 ssh密钥登录比密码登录安全&#xff0c;主要是因为他使用了非对称加密&#xff0c;登录过程中需…

CentOS开启SSH免密登录

CentOS开启SSH免密登录 要实现SSH免密登录&#xff0c;首先需要准备一组公钥和私钥。将公钥放到服务器上&#xff0c;将私钥放到客户机上。当客户机连接服务器时&#xff0c;服务器会根据自身的公钥校验客户机的私钥&#xff0c;如果校验通过则允许连接。 一、创建密钥 在客…

Ubuntu开启SSH免密登录

Ubuntu开启SSH免密登录 要实现SSH免密登录&#xff0c;首先需要准备一组公钥和私钥。将公钥放到服务器上&#xff0c;将私钥放到客户机上。当客户机连接服务器时&#xff0c;服务器会根据自身的公钥校验客户机的私钥&#xff0c;如果校验通过则允许连接。 一、创建密钥 在客…

git SSH免密登录

git系列文章目录 第八章 git SSH免密登录的使用 文章目录 git系列文章目录前言一、生成密钥二、使用步骤1.使用VSCODE打开.pub文件复制其中的内容2.打开github或者gitee进入设置选项设置密钥3.使用密钥 总结 前言 虽然Windows系统提供了凭据功能&#xff0c;但是介绍ssh提交&a…

配置SSH免密登录

配置SSH免密登录 1. 在各个虚拟机&#xff08;master、s1、s2&#xff09;家目录执行ssh-keygen -b 1024 -t rsa&#xff0c;输入2次回车&#xff0c;输入y/yes再继续回车 ssh-keygen -b 1024 -t rsa 2. 进入到.ssh目录中 ls -all #查看所有文件和文件夹 cd .ssh 查看目录 ls…

SSH免密登录原理

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 SSH免密登录原理 前言一、配置ssh二、无密钥配置1、免密登录原理2、生成公钥和私钥3、将公钥拷贝到要免密登录的目标机器上 三、.ssh文件夹下&#xff08;~/.ssh&#xff09;…

ssh免密登录

两台设备&#xff0c;第一台设备作为客户端&#xff0c;第二台设备作为服务端&#xff0c;在第一台使用一个用户免密登录第二台设备。 在第一台设备输入命令&#xff1a; ssh-keygen -t rsa -b 2048 输入命令执行后遇到选项可以选择默认&#xff0c;敲Enter继续执行便可 然后把…

VSCode SSH 免密登录

前提 VSCode 已经安装 Remote - SSH 插件&#xff0c;并且可以通过密码登录远程主机 步骤 假设 VSCode 运行在 Windows&#xff0c;SSH 远程登录 Linux 1、在 Windows 端生成公钥/私钥对 例如在 git bash 中运行 ssh-keygen&#xff0c;然后一路回车&#xff0c;直到出现下面…

SSH免密登录配置

免密登录命令&#xff1a; 1.进入.ssh目录&#xff1a; cd ~/.ssh 2.生成一对密钥&#xff1a; ssh-keygen -t rsa 3.发送公钥&#xff1a; ssh-copy-id 192.168.xx.xxx 4.免密登录测试&#xff1a; ssh 192.168.xx.xxx 目录 一、免密登录原理 二、配置ssh 1.查看 .…

SSH配置免密登录方法

转载自https://blog.csdn.net/jeikerxiao/article/details/84105529 1.客户端生成公私钥 本地客户端生成公私钥&#xff1a;&#xff08;一路回车默认即可&#xff09; ssh-keygen上面这个命令会在用户目录.ssh文件夹下创建公私钥 cd ~/.sshls下创建两个密钥&#xff1a; id…

Jwt登录退出

1.登录获取用户信息并写入token Overridepublic CommonResult loginV2(RcSysUserEntity byAccount) {log.info("********************");log.info("******************** account-V2:{}",byAccount.getAccount());log.info("********************&quo…

注册、登录、退出登录

运营商系统登录与安全控制 2.1需求分析 完成运营商登陆功能 (1)、登录页面 (2)登录后页面 (3)、点击右上角头像后显示。 2.2登陆功能的实现 2.2.1配置文件 (1)修改mall-manager-web的pom.xml ,添加依赖 <!-- 身份验证 --> <dependency> &l…

小程序登录与退出登录

主要是通过在storage中缓存userInfo与清空userInfo的信息来实现登录与退出登录 wxml&#xff1a; <view class"setting"><view class"setting_thr" bindtap"login">登录</view></view><view class"setting&qu…

前端新用户注册,登录,退出登录功能实现

目录 新用户注册功能 用户登录功能 用户退出登录功能 新用户注册功能 基本思路&#xff1a; 将用户的信息通过接口存入数据库&#xff0c;接口会返回是否存入成功 使用elementui做表单验证 代码如下&#xff1a; <template><div class"register">&…

Linux的登录和退出

1. 图形用户界面的登录和退出 图形用户界面&#xff0c;直接输入用户名密码即可登录。 在终端中输入init 0命令即可关闭系统。或者我们点击这里&#xff1a; 2.命令行界面登录和退出 Linux提供了6个虚拟控制台&#xff0c;通过按键盘CtrlAltF[1~6]来切换。如图&#xff0…

登录退出页面

一.登录业务流程 1、在登录页面输入用户名和密码 2、调用后台接口进行验证 3、通过验证之后,根据后台的响应状态跳转到项目主页 二.登录业务的相关技术点 1、http是无状态的 2、通过cookie在客户端记录状态 3、通过session在服务器端记录状态 4、通过token方式维持状态(解决跨…