c/c++链表学习

2023-05-16

链表学习持续更新

这边设置链表的节点,里面包含两个信息分别是数据域(可以用自己写的类或者基本数据结构,为了简便这边直接使用基本数据类型)和指向下一节点的指针。

struct SeqList
{
int data;
SeqList *next;
};

1.首先是创建链表

SeqList *creatlist(int n)
{
	SeqList* head = new SeqList;
	head->data = 100;
	SeqList *p = head;
	for (int i = 0; i <= n;i++)
	{
		SeqList *q = new SeqList;
		q->data = i;
		q->next = NULL;
		p->next = q;
		p = q;
	}	

	return head;
}

2.修改链表内容

void change_point(SeqList *head, int n, int number)
{
	SeqList *p = head;
	while (n)
	{
		p = p->next;
		n--;
	}
	p->data = number;
}

3.删除节点

void delete_point(SeqList *head, int n)
{
	
	SeqList *p = head;
	SeqList *tmp = new SeqList;
	while (n>1)
	{
		p = p->next;
		n--;
	}
	tmp = p->next;
	p->next = tmp->next;
	delete tmp;
}

4.插入节点

void insert_point(SeqList *head, int n, int val)
{
	SeqList *listnode = new SeqList;
	listnode->data = val;
	SeqList*p = head;
	while (n>0)
	{
		p = p->next;
		n--;
	}
	listnode->next = p->next;
	p->next = listnode;
}

5.计算链表长度

int listlength(SeqList * head)
{
	int count = 0;
	SeqList*p = head;
	while (p->next!=NULL)
	{
		p = p->next;
		count++;
	}
	return count;
}

6.打印链表

void print_list(SeqList*head)
{
	if (head->next==NULL)
	{
		return;
	}
	SeqList *p = head->next;
	while (p->next!=NULL)
	{
		cout << p->data << endl;
		p = p->next;
	}
}

7.清空&销毁链表

//清空链表
void clearlist(SeqList*head)
{
	if (head==NULL)
	{
		return;
	}
	SeqList *p = head->next;
	while (p != NULL)
	{
		SeqList *q = p->next;
		delete p;
		p = NULL;
		p = q;
	}
	head->next = NULL;
}
//销毁链表
void destroylist(SeqList*head)
{
	clearlist(head);
	delete head;
	head = NULL;
}

8.反转链表

在这里插入图片描述

SeqList* reverse(SeqList* head){
	SeqList* pPrev = nullptr;
	SeqList* p = head;
	SeqList* pReverseHead = nullptr;
	while (p != nullptr){
		SeqList* pNext = p->next;
		if (pNext == nullptr){
			pReverseHead = p;
		}
		p->next = pPrev;
		pPrev = p;
		p = pNext;
	}
	return pReverseHead;
}

9.获取倒数第N个结点

使用快慢指针,先让快指针 q q q走到第N个结点位置,然后让快慢指针一起走,直至快指针的下一个指向NULL

//获得倒数第N个指针(使用快慢指针的方法)
SeqList*getrelistnode(SeqList*head, int n)
{
	SeqList *p = head;
	SeqList*q = head;
	for (int i = 0; i < n;i++)
	{
		q = q->next;
	}
	while (q->next!=NULL)
	{
		p = p->next;
		q = q->next;
	}
	return p;
}

每个函数执行在main()函数中实现

void main()
{
	SeqList * head = new SeqList;
	head=creatlist(10);//创建链表
	listlength(head);//计算链表长度
	//change_point(head, 3, 20);//修改元素
//	delete_point(head, 2);//删除链表节点
	//insert_point(head, 4, 40);//插入链表节点
	head=reverse(head);
	print_list(head);
	clearlist(head);//清空
	destroylist(head);//销毁
	return;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c/c++链表学习 的相关文章

  • Linux 虚拟机和主机互通 [万能方法]

    VMware Linux 虚拟机和主机互通 万能方法 前言 xff1a 诸如以下问题 xff0c 解决问题的思路都是一样的 xff0c 看完此文后都能找到答案 xff1a 主机为何 ping 不通 虚拟机 xff1f 请检查是否在同一网段
  • 洛谷 P2651 添加括号III

    思路 xff1a a1肯定是分子 xff0c a2肯定是分母 xff0c 只要确认a1a3a4 a2是否是整数 只要确认a1a3a4 a2是否是整数 每次将a2 61 a2 gcd a2 ai i 61 1 3 4 5 即可约分 span
  • Win10系统重装教程(纯净版)

    文章目录 一 提示二 制作系统u盘1 官网下载工具2 选择 立即下载工具 xff0c 然后选择 运行 3 选择 为另一台电脑创建安装介质 xff0c 然后选择 下一步 4 选择对应的Windows版本 xff0c 然后点击 下一步 5 选择
  • Web安全—CSRF漏洞利用(pikachu)

    Web安全 CSRF漏洞利用 前言 xff1a 此篇文章主要记录pikachu靶场漏洞中三种模式的CSRF漏洞的利用 xff0c 此处不对基本原理进行过多赘述 xff0c 基础可参考文章 xff1a Web安全 跨站请求伪造攻击 xff08
  • 1034: 字典序最小的子序列(单调队列)

    题目描述 PIPI有一个字符串S xff0c 现在它想刁难刁难一下聪明的你 xff0c 首先它给你一个整数K xff0c 要你找出字典序最小的字符串T xff0c 并且字符串T满足 xff1a T由S的子序列构成 xff08 如S 61 a
  • Ubuntu server 18.04配置lftp过程libtinfo.so.6 error解决方法

    基本情况 服务器型号 xff1a DELL PowerEdge T440 系统版本 xff1a ubuntu 18 04 4 live server amd64 iso 配置lftp 按如下命令安装 xff1a sudo apt get u
  • (RPA)手把手——正则表达式基本使用(二)

    艺赛旗 RPA9 0全新首发免费下载 点击下载 http www i search com cn index html from 61 line1 重复次数 后面跟着元字符 43 or 的 用来指定匹配子模式的次数 这些元字符在不同的情况下
  • Python序列类型的切片

    序列类型的切片 在字符串 列表 元组三种序列类型中的切片方法一致 xff0c 都是使用变量名 43 开始索引值 结束索引值 xff1a 步长 的方式 xff0c 若是步长省略则步长默认为1 步长 xff0c 顾名思义就是一步有多长 xff0
  • 当url中出现“#“号时,“#“及其后面的字符串都会被忽略

    url中出现 34 号时 xff0c 34 及后面参数为null 解决方法 xff1a 传参就用escape 函数转义 原理 xff1a 当url中出现 34 号时 xff0c 及其后面的字符串都会被忽略 xff0c 不会被发送到服务器 x
  • springboot项目打成jar包后,放在linux系统上运行时出现文件空指针等问题

    场景 xff1a 使用springboot搭建Fabric java sdk的客户端项目 xff0c 需要将Fabric网络生成的密钥和证书的文件夹拷贝到项目的资源目录或者config包下 xff0c 在配置文件中配置各种证书的路径 xff
  • Ubuntu常见问题解决

    Ubuntu常见问题解决 1 ubuntu系统上安装qt5 12后无法调试运行 原因 xff1a 缺少gcc g 43 43 make libgl1 sudo apt span class token operator span get i
  • vscode 配置 copilot(最牛逼的AI智能提示)

    copilot github 如果绑定了学校邮箱 申请免费资格 https link zhihu com target 61 https 3A github com features copilot signup vscode 更新到最新版
  • OpenCV4.7+VS2019环境变量配置

    OpenCV4 7 43 VS2019配置 1 下载OpenCV并解压安装2 配置环境 xff08 1 xff09 配置环境变量 xff08 2 xff09 将系统改成x64 xff08 3 xff09 配置包含目录 xff08 4 xff
  • win10下mysql的下载、安装以及SSL配置超详解教程

    mysql 5 7 28 winx64的下载 安装以及SSL配置教程 1 下载mysql 压缩文件2 安装教程3 安装mysql 5 7 28 winx643 1 解压缩3 2 配置my ini文件3 3 配置环境变量3 4 安装 open
  • java获取jar包中的文件资源

    java获取jar包中的文件资源 一 问题示例1 1 项目开发时1 2 打包成jar后 二 解决方案2 1 解决方法2 2 实现 问题描述 xff1a 我们常常在代码中读取一些资源文件 比如图片 xff0c 音乐 xff0c 文本等等 在单
  • week12-作业(动态规划)

    C 必做题 3 东东每个学期都会去寝室接受扫楼的任务 xff0c 并清点每个寝室的人数 每个寝室里面有ai个人 1 lt 61 i lt 61 n 从第i到第j个宿舍一共有sum i j 61 a i 43 43 a j 个人 这让宿管阿姨
  • 自动写代码?Copilot尝鲜及其奇技淫巧

    自动写代码 Copilot尝鲜及其奇技淫巧 博主在同学那里了解到Copilot这个神奇的项目 xff0c 听说能自动帮你写代码 xff0c 顿时来了性质 xff0c 从现在起 xff0c 我不再写代码 xff0c 我要搭载Copilot起飞
  • 两台MAC时间机器的备份和系统恢复

    背景 xff1a 一台mbp16寸 xff08 2019 xff09 xff0c 系统为最新的12 2 1 xff0c 本文命名为A 一台mba13寸 xff08 2020 xff09 xff0c 系统为10 15 7 xff0c 本文命名
  • 个人深度学习工作站配置ssh&xrdp&vnc远程连接

    最近实验室买了台服务器主要用于跑深度学习 xff0c 买过来只有一台主机 xff0c 所有的东西都需要自己配置 xff0c 经过半个月了踩坑 xff0c 将自己配置成功的案例写下来 xff0c 有相关需求的小伙伴可以参考一下 xff1a 主

随机推荐

  • 程序员必须掌握的核心算法

    程序员必须掌握的核心算法 一 算法最最基础 1 时间复杂度 2 空间复杂度 一般最先接触的就是时间复杂度和空间复杂度的学习了 xff0c 这两个概念以及如何计算 xff0c 是必须学的 xff0c 也是必须最先学的 xff0c 主要有最大复
  • MFC实现计算器

    MFC实现计算器 简易计算器实现加减乘除等功能 xff0c 可以使用小数点 1 首先添加计算器按钮界面 2 设置好各个变量 xff0c 注意添加变量时要选择value 3 双击各个button按键依次添加功能 话不多说直接上代码 Mcoun
  • 关于图算法的整理DFS,BFS,Dijkstra,Prim代码

    图 邻接矩阵与邻接表 xff08 两者皆可用来表示有向图和无向图 xff09 创建一个基类graph pragma once include lt iostream gt include lt vector gt include lt ma
  • 哈夫曼树基本原理

    首先我们看看基本定义 哈夫曼树的学术定义为 xff0c 带权路径长度最短的二叉树 xff0c 即节点具有两个属性 xff1a 1 权值 xff0c 可以看作节点表达出的数值大小 xff0c 或者变换的表示为概率大小 2 路径 xff0c 可
  • Abaqus应力张量方向输出

    Abaqus应力张量方向输出 从abaqus中能够查看应力张量方向 xff0c 但是无法实现方向场的输出 xff0c 由于实际工程需要考虑应力方向 xff0c 必须将应力张量的方向考虑进去 具体实现 xff0c 不会可以私聊我
  • POV-Ray简单案例

    POV Ray xff0c 全名是Persistence of Vision Raytracer xff0c 是一个使用光线跟踪绘制三维图像的开放源代码免费软件 按照3 7版本给的参考 xff0c 写的代码 xff0c 以下为部分源码 ve
  • MFC图片保存

    MFC保存图片 添加事件处理程序于view类中 代码如下 xff1a void CVoronoi2View OnFileSaveAs CClientDC dc this CRect rect GetClientRect amp rect 获
  • c++代码运行时间测试

    测试代码运行时间 xff08 以秒 为单位 xff09 使用高精度时控函数QueryPerformanceFrequency xff08 xff09 和 QueryPerformanceCounter xff08 xff09 具体实现如下
  • 内存四区的深入学习

    内存四区 1 代码区 写的代码 xff0c 包括各种函数 由OS管理 xff0c 程序结束时 才释放 2 全局区 主要的数据有 xff1a 全局变量 静态变量 常量 xff08 字符串常量 xff09 在函数返回类型前加static xff
  • 三维空间点到线段的距离

    点到线段的最短距离 与点到直线的最短距离 存在区别 xff0c 求点到线段的最短距离 时要考虑参考点P沿线段方向的投影点Q是否在线段 上如图所示 xff1a 点到线段的最短距离如下图所示 xff1a 解决点到线段的距离可以用面积法等 xff
  • Apple Developer会员注册以及续订“支付授权失败...”问题

    2020 08 20更新 xff1a 从去年年底开始 xff0c 苹果开发者账号的注册方式已经修改为通过iOS设备上的Apple Developer App进行注册 xff0c 账号的年费支付方式也被调整为与一般的App一样 xff0c 以
  • 十大经典排序算法

    十大经典排序算法 目录 十大经典排序算法 1 时间复杂度为O n2 1 1 冒泡排序 xff08 Bubble Sort xff09 1 2 选择排序 xff08 Selectin Sort xff09 1 3 插入排序 xff08 Ins
  • 指针传参的深入思考

    对指针传参的深入思考 xff0c 很重要的一点还是需要看指针是否指向新的地址 1 如果指向新的空间 xff0c 那么对形参处理后不会影响实参 xff0c 即参数没有传回 xff0c 因为实参的指针地址和形参指针的地址不同 xff0c 对不同
  • 建立二叉树

    一颗二叉树 创建结点 typedef struct node int data node lchild node rchild node lchild NULL rchild NULL Tree tree 建树 tree bulid tre
  • 学习STL的历程——关联容器

    STL模板库包括了容器 算法 迭代器 仿函数 适配器 分配器 主要谈谈容器 STL中的容器有序列容器和关联容器 xff0c 容器适配器等 1 xff09 序列容器 xff08 以线性序列的方式存储元素 xff0c 没对元素进行排序 xff0
  • STL三角网格模型体积计算

    float STLVolume float vols 61 0 for int i 61 0 i lt Tmesh gt faces size i 43 43 vec p1 61 Tmesh gt vertices Tmesh gt fac
  • Abaqus齿轮有限元分析

    齿轮啮合模拟 整理好的文件放在资源里了 xff0c 直接解压即可齿轮有限元分析 保姆级步骤如下 xff08 废话少说直接看图片设置 xff09 xff1a 首先先对齿轮模型划分网格 xff0c 该分析所用的前处理软件为Hypermesh x
  • const成员函数

    const成员函数 const修饰的类成员函数称为const成员函数 xff0c const修饰类成员函数 xff0c 实际修饰该成员函数隐含的this指针 xff0c 表明在该成员函数中不能对类的任何成员进行修改 如下图所示 xff1a
  • 设计模式——单例模式

    为什么单例模式中的成员函数都是静态的 xff1f 你只要弄明白单例模式是如何实现的 xff0c 就能从本质上理解这个问题 xff1b 单例模式实现过程如下 xff1a 首先 xff0c 将该类的构造函数私有化 xff08 目的是禁止其他程序
  • c/c++链表学习

    链表学习持续更新 这边设置链表的节点 xff0c 里面包含两个信息分别是数据域 xff08 可以用自己写的类或者基本数据结构 xff0c 为了简便这边直接使用基本数据类型 xff09 和指向下一节点的指针 struct SeqList in