链表的回顾与总结(一)正序、逆序、有序、插入、修改、删除

  1. 逆序链表
    在这里插入图片描述
#include<iostream>
using namespace std;
struct node
{int data;node* next;
};//最好不要全局定义指针,很麻烦
void show(node* head)
{while (head){cout << head->data << ' ';head = head->next;}
}
int main()
{int i, j, k, ch;node* head = NULL;node* p, * s;cin >> ch;//这个相比cin>>p->num更方便while (ch != 0){p = new node;p->data = ch;p->next = head;head = p;cin >> ch;//当最后一位是0的时候连新的结点都不需要建立}show(head);return 0;
}

升级版:

#include<iostream>
using namespace std;
struct node
{int data;node* next;
};
void show(node*head)
{while (head){cout << head->data << ' ';head = head->next;}
}
int main()
{int n, i, j, k;node* head = NULL;node* q=NULL, * p;;cin >> n;while (n--){cin >> k;p = new node;p->data = k;p->next = head;head = p;}show(head);return 0;
}
  1. 正序链表
    在这里插入图片描述
方法一:(逆序建立链表,再逆序输出链表)
struct node
{int data;node* next;
};
void show(node* head)//指针传参新建一个匿名对象
{if (head == NULL){return;//代码块的结束}else{show(head->next);//递归:入栈出栈的方式cout << head->data << ' ';}
}
int main()
{int i, j, k, ch;node* head = NULL;node* p, * s;cin >> ch;while (ch != 0){p = new node;p->data = ch;p->next = head;head = p;cin >> ch;}show(head);return 0;
}
方法二:(正序建立链表,正序输出)
int main()
{int n, i, j, k;node* head = NULL;node* q = NULL;//把q初始化为空指针的原因是VS会显示“使用了可能未初始化的本地指针变量”node* p;cin >> k;while (k!=0){p = new node;p->data = k;p->next = NULL;if (head == NULL)head = p;else q->next = p;q = p;cin >> k;}show(head);return 0;
}

升级版:

while(head)
{
cout<<head->data<<' ';
head=head->next;
}
int main()
{
int n,i,j,k;
cin>>n;
node*head=NULL;
node*q=NULL;//把q初始化为空指针的原因是VS会显示“使用了可能未初始化的本地指针变量”
node *p;
while(n--)
{
cin>>k;
p=new node;
p->data=k;
p->next=NULL;
if(head==NULL)
head=p;
else q->next=p;
q=p;
}
show(head);
return 0;
}
  1. 有序链表,输入一串数。
#include<iostream>
using namespace std;
struct node
{int data;node* next;
};
void insert(node*& head, int k)
{node* s, * p, * q;s = new node;s->data = k;s->next = NULL;if (head == NULL){head = s;return;//头是空的}if (head->data > s->data){s->next = head;head = s;return;}for (q = head, p = head->next; p; q = p, p = p->next){if (p->data > s->data){s->next = p;q->next = s;return;}}q->next = s;return;
}void show(node*head)
{while (head){cout << head->data << ' ';head = head->next;}
}
int main()
{int n, i, j, k;node* head = NULL;cin >> k;while (k!=0){insert(head, k);cin >> k;}show(head);return 0;
}
  1. 建立有序链表,为该有序链表中插入值,插值结束后链表仍然有序。
#include<iostream>
using namespace std;
struct node
{int data;node* next;
};
void insert(node*& head, int k)
{node* s, * p, * q;s = new node;s->data = k;s->next = NULL;if (head == NULL){head = s;return;//头是空的}if (head->data > s->data){s->next = head;head = s;return;}for (q = head, p = head->next; p; q = p, p = p->next){if (p->data > s->data){s->next = p;q->next = s;return;}}q->next = s;return;
}
void show(node*head)
{while (head){cout << head->data << ' ';head = head->next;}
}
int main()
{int n, i, j, k;node* head = NULL;node* q = NULL;//把q初始化为空指针的原因是VS会显示“使用了可能未初始化的本地指针变量”node* p;cin >> n;while (n--){cin >> k;insert(head, k);}cin >> j;insert(head, j);show(head);return 0;
}
  1. 节点修改
#include<iostream>
using namespace std;
struct node
{int num;string name;int age;node* next;
};
void show(node*head)
{while (head){cout << head->num << ' ' << head->name << ' ' << head->age << ' ' << endl;head = head->next;}
}
node *change(node* head, int m, string ming, int agee)
{node* h1 = head;while (head){if (head->num == m){head->name = ming;head->age = agee;break;}head = head->next;}return h1;
}
int main()
{int n, i, j, k, m, agee;string ming;cin >> n;node* head = NULL;node* q=NULL, * p;while (n--){p = new node;cin >> p->num >> p->name >> p->age;p->next = NULL;if (head == NULL)head = p;else q->next = p;q = p;}cin >> m >> ming >> agee;head=change(head, m, ming, agee);show(head);return 0;
}
  1. 删除结点
#include<iostream>
using namespace std;
struct node
{int num;string name;int age;node* next;
};
void show(node*head)
{while (head){cout << head->num << ' ' << head->name << ' ' << head->age << ' ' << endl;head = head->next;}
}
node* del(node* head, int k)
{node* pre = head;node* cur = head->next;while (cur!=NULL)//先遍历除头结点之外的部分{if (cur->age == k){pre->next = cur->next;}else pre = cur;cur = cur->next;}if (head->age == k)//最后看节点head = head->next;return head;
}
int main()
{int n, i, j, k, m, agee;string ming;cin >> n;node* head = NULL;node* q=NULL, * p;while (n--){p = new node;cin >> p->num >> p->name >> p->age;p->next = NULL;if (head == NULL)head = p;else q->next = p;q = p;}cin >> k;head=del(head, k);show(head);return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

关于相机的一些零碎知识点

热成像&#xff0c;英文为Thermal Imaging&#xff0c;例如型号500T&#xff0c;其实指的就是热成像500分辨率。 相机的CMOS&#xff0c;英文为Complementary Metal Oxide Semiconductor&#xff0c;是数码相机的核心成像部件&#xff0c;是一种互补金属氧化物导体器件。 DPI…

C9800的Flex配置

C9800的配置和AireOS WLC的配置架构有了很大的调整&#xff0c;在配置一个WLAN的时候&#xff0c;可能相对麻烦一些&#xff0c;但是架构还是比较清晰。 这里记录一下针对Flex的配置&#xff0c;主要分为如下几个摘要&#xff08;以及对应的CLI配置&#xff09;&#xff1a; 1…

Carsim 2023.2 安装及使用

在我看来Carsim 2023.2最大的优点在于&#xff1a; 完全不用担心修改了内部参数&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; Carsim 2023.2新增了database builder功能&#xff0c;使用者自己可以新建database&#xff0c;而且可以挑选自己所…

留学期间如何提高职业竞争力?

留学期间是提高职业竞争力的关键时期&#xff0c;以下是一些具体的建议&#xff0c;帮助留学生在留学期间增强自身的职业竞争力&#xff1a; 一、深化专业知识与技能 1. 专注于课程学习&#xff1a;努力学习专业课程&#xff0c;掌握扎实的专业知识&#xff0c;这是提高职业竞…

解决Vscode无法解析导入“xxxxx”Pylance的问题

问题&#xff1a; 在使用Vscode本地或ssh远程调试Python代码时&#xff0c;有时需要导入本地的其他模块&#xff0c;比如通过环境变量$PYTHONPATH指定的包路径&#xff0c;或者通过pip、conda、mim安装的pkg。 虽然程序可以正常运行&#xff0c;但Vscode会出现无法解析导入“x…

H264重点笔记记录

H264格式 目前视频中的H.264流行的NALU包装方式有两种&#xff0c;一种叫做annexB&#xff0c;一种叫做avcC。对于这两种格式&#xff0c;不同的厂商支持程度也不太一样&#xff0c;例如&#xff0c;Android硬解码MediaCodec只接受annexB格式的数据&#xff0c;而Apple的Video…

Linux-呈现数据

输入和输出 在脚本中重定向输出 在脚本中重定向输入 创建自己的重定向-创建输出文件描述符/重定向文件描述符 创建自己的重定向-创建输入文件描述符/创建读写文件描述符 创建自己的重定向-关闭文件描述符 列举打开的文件描述符 阻止命令输出 创建临时文件 记录消息

观诺奖感言:学好数理化,都被AI打趴下!

10月8日&#xff0c;瑞典皇家科学院宣布&#xff0c;将2024年诺贝尔物理学奖授予两位人工智能先驱——约翰霍普菲尔德&#xff08;John Hopfield&#xff09;和杰弗里辛顿&#xff08;Geoffrey Hinton&#xff09;。 在接到瑞典方打来的电话后&#xff0c;Hinton还在反复确认&a…

低功耗接地故障控制器D4145

一、概述 D4145 是一个接地故障断路器。它能够检测到不良的接地条件&#xff0c;譬如装置接触到水时&#xff0c;它会在有害或致命的电击发生之前将电路断开。 D4145能检测并保护从火线到地线,从零线到地线的故障.这种简单而传统的电路设计能够确保其应用自如和长时间的可靠性。…

鸿蒙开发之ArkUI 界面篇 二十八 ForEach

ForEach语法格式如下&#xff1a; ForEach(数组名字,(Item&#xff0c;index) >{item要做的事情}) 实现下图效果&#xff1a; 代码如下&#xff1a; Entry Component struct IndexTest {State titles:string[] [学鸿蒙,赢取白富美,走向人生巅峰,影音娱乐,海外旅游]build…

MES管理系统对中小企业有哪些帮助

MES管理系统解决方案对中小企业具有显著的帮助&#xff0c;主要体现在以下几个方面&#xff1a; 一、提升生产效率 MES管理系统能够实时监控生产过程&#xff0c;提供准确的生产数据和及时的反馈。这种实时监控与数据分析能力&#xff0c;使中小企业能够精准把握生产脉搏&…

机器学习、深度学习评价指标汇总:TP、TN、FP、FN、AP、mAP、IoU、mAP@3、Prec@10、 Acc@10

系列文章目录 文章目录 系列文章目录一、真正例&#xff08;True Positive&#xff09;、假正例&#xff08;False Positive&#xff09;、真负例&#xff08;True Negative&#xff09;和假负例&#xff08;False Negative&#xff09;是评估分类模型性能的重要概念。1. 定义2…

Excel中使用SQL语句的四种方法

总结在 Excel 中使用 SQL 语句的四种方法&#xff0c;各种方法都有各自的适用场景&#xff0c;可以选择自己熟悉的或喜欢方式。本文以在 Excel 中操作 MS SQL 数据库的数据为例进行说明。MS SQL 的数据如下&#xff0c;使用微软 SQLExpress 版本。 方法 1&#xff1a; Excel 现…

YOLOv10改进策略【损失函数篇】| 替换激活函数为Mish、PReLU、Hardswish、LeakyReLU、ReLU6

前言 在卷积神经网络中&#xff0c;激活函数通过在神经网络中引入非线性&#xff0c;使网络能够学习和逼近复杂函数&#xff0c;从而处理复杂的模式识别与分类问题。 文章目录 前言一、YOLOv11激活函数SiLU激活函数特性与其他激活函数的比较实现代码 二、替换激活函数&#xf…

上市四天暴涨又暴跌,扫描全能王背后公司坐上“过山车”

股价四天涨五倍&#xff0c;遇到回调跌一半&#xff0c;扫描全能王母公司——合合信息&#xff0c;一上市就坐上了“过山车”。 合合信息其实早在2021年就向科创板申请上市&#xff0c;并在2023年成功过会&#xff0c;但直到9月13日才开启申购&#xff0c;IPO之路一走就是三年…

ssm基于Javaee的影视创作论坛的设计与实现

系统包含&#xff1a;源码论文 所用技术&#xff1a;SpringBootVueSSMMybatisMysql 免费提供给大家参考或者学习&#xff0c;获取源码请私聊我 需要定制请私聊 目 录 目 录 III 第1章 绪论 1 1.1选题动因 1 1.2目的和意义 1 1.3论文结构安排 2 第2章 开发环境与技术 …

minio集群部署

最近接触到minio&#xff0c; 将本地集群部署&#xff0c;分别在ubuntu、centos stream9上进行了搭建&#xff0c;目前看里面的小坑不小&#xff0c;记录以下教程&#xff0c;以备忘、以供他人借鉴。 #### 准备 1、因新版本的minio要求&#xff0c;集群部署必须使用挂载非 roo…

已经被这几种广告彻底逼疯……还好有救了

这个假期回家团聚&#xff0c;爸妈小心翼翼问我手机越来越难用了&#xff0c;让我帮忙看看是不是中病毒了&#xff0c;了解后才知道原来事情是这样的&#xff1a; 以前开屏广告不小心误触已经让人恼火&#xff0c;现在是手机轻微动一动就会进入广告&#xff0c;打开app最后都不…

探秘AIPC软件:云端和本地如何奏响混合乐章

AIPC软件的魅力 ©作者|chuiyuw 来源|神州问学 一、AI PC 的崛起之势 1. 传统 PC 受到 AI PC 挑战 AI PC 与传统 PC 相比&#xff0c;具有显著的不同。硬件方面&#xff0c;AI PC 在传统 PC 职能的基础上&#xff0c;集成了混合 AI 算力单元&#xff0c;通常配备高性能处…

《花100块做个摸鱼小网站! 》第七篇—谁访问了我们的网站?

⭐️基础链接导航⭐️ 服务器 → ☁️ 阿里云活动地址 看样例 → &#x1f41f; 摸鱼小网站地址 学代码 → &#x1f4bb; 源码库地址 一、前言 大家好呀&#xff0c;我是summo&#xff0c;最近发生了些事情(被裁员了&#xff0c;在找工作中)导致断更了&#xff0c;非常抱歉。…