单链表创建-遍历-排序-插入-删除-逆序操作

2024-09-02 12:48

本文主要是介绍单链表创建-遍历-排序-插入-删除-逆序操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

#include <iostream>
using namespace std;typedef struct NodeType
{int data;NodeType* pNext;
}NodeType;
//链表的1创建 2 遍历 3排序 4 插入 5 删除
NodeType* create_list();
void traverse_list(NodeType* pHead);
void sort_list(NodeType* pHead);
void insert_list(NodeType*,int pos,int val);
void delete_list(NodeType*,int pos);NodeType* reverse_list(NodeType* pHead);int main()
{NodeType* pHead=create_list();//insert_list(pHead,1,33);//traverse_list(pHead);//delete_list(pHead,1);pHead=reverse_list(pHead);traverse_list(pHead);return 0;
}
//*****************创建链表*************************************************/
NodeType* create_list()
{cout <<" 输入创建节点个数" <<endl;int len;int val;cin >> len;if (len<=0){exit(-1);}NodeType* pHead=new NodeType;NodeType* p=pHead;for (int i=0;i<len;i++){cin >>val;NodeType* pNew=new NodeType;pNew->data=val;pNew->pNext=NULL;p->pNext=pNew;p=pNew;}return pHead;
}
//*****************遍历链表*************************************************/
void traverse_list(NodeType* pHead)
{for (NodeType*p=pHead->pNext;p!=NULL;p=p->pNext){cout << p->data << " ";}cout << endl;
}
/*****************排序链表*************************************************/
void sort_list(NodeType* pHead)
{NodeType* p=pHead->pNext;NodeType* pTail;for (;p->pNext!=NULL;p=p->pNext){for (pTail=p->pNext;pTail!=NULL;pTail=pTail->pNext){if((p->data)>(pTail->data)){swap(p->data,pTail->data);}}}
}
/*****************插入链表*************************************************/
void insert_list(NodeType* pHead,int pos,int val)
{//不仅仅是判断条件,而且还有定位p(插入点位置前一个位置)NodeType* p=pHead;for (int i=0;p!=NULL&&i<pos-1;p=p->pNext){++i;}//插入 就插入一个节点NodeType* pNew=new NodeType;pNew->data=val;pNew->pNext=p->pNext;p->pNext=pNew;
}/*****************插入链表*************************************************/
void delete_list(NodeType* pHead,int pos)
{NodeType* p=pHead;for ( int i=0;i<pos-1&&p!=NULL;p=p->pNext,i++){}NodeType* q=p->pNext;p->pNext=p->pNext->pNext;delete q;}
/*****************逆序链表*************************************************/
NodeType* reverse_list(NodeType* pHead)
{NodeType* p1,*p2,*p3;if (pHead==NULL||pHead->pNext==NULL){return pHead;}p1=pHead->pNext;p2=p1->pNext;p1->pNext=NULL;while (p2){p3=p2->pNext;p2->pNext=p1;p1=p2;p2=p3;}pHead->pNext=p1;return pHead;
}

逆序链表笔记图:


这篇关于单链表创建-遍历-排序-插入-删除-逆序操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1129997

相关文章

MySQL逻辑删除与唯一索引冲突解决方案

《MySQL逻辑删除与唯一索引冲突解决方案》本文探讨MySQL逻辑删除与唯一索引冲突问题,提出四种解决方案:复合索引+时间戳、修改唯一字段、历史表、业务层校验,推荐方案1和方案3,适用于不同场景,感兴... 目录问题背景问题复现解决方案解决方案1.复合唯一索引 + 时间戳删除字段解决方案2:删除后修改唯一字

Ubuntu 24.04启用root图形登录的操作流程

《Ubuntu24.04启用root图形登录的操作流程》Ubuntu默认禁用root账户的图形与SSH登录,这是为了安全,但在某些场景你可能需要直接用root登录GNOME桌面,本文以Ubuntu2... 目录一、前言二、准备工作三、设置 root 密码四、启用图形界面 root 登录1. 修改 GDM 配

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.

JSONArray在Java中的应用操作实例

《JSONArray在Java中的应用操作实例》JSONArray是org.json库用于处理JSON数组的类,可将Java对象(Map/List)转换为JSON格式,提供增删改查等操作,适用于前后端... 目录1. jsONArray定义与功能1.1 JSONArray概念阐释1.1.1 什么是JSONA

Linux线程之线程的创建、属性、回收、退出、取消方式

《Linux线程之线程的创建、属性、回收、退出、取消方式》文章总结了线程管理核心知识:线程号唯一、创建方式、属性设置(如分离状态与栈大小)、回收机制(join/detach)、退出方法(返回/pthr... 目录1. 线程号2. 线程的创建3. 线程属性4. 线程的回收5. 线程的退出6. 线程的取消7.

使用Python删除Excel中的行列和单元格示例详解

《使用Python删除Excel中的行列和单元格示例详解》在处理Excel数据时,删除不需要的行、列或单元格是一项常见且必要的操作,本文将使用Python脚本实现对Excel表格的高效自动化处理,感兴... 目录开发环境准备使用 python 删除 Excphpel 表格中的行删除特定行删除空白行删除含指定

Linux下删除乱码文件和目录的实现方式

《Linux下删除乱码文件和目录的实现方式》:本文主要介绍Linux下删除乱码文件和目录的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下删除乱码文件和目录方法1方法2总结Linux下删除乱码文件和目录方法1使用ls -i命令找到文件或目录

创建Java keystore文件的完整指南及详细步骤

《创建Javakeystore文件的完整指南及详细步骤》本文详解Java中keystore的创建与配置,涵盖私钥管理、自签名与CA证书生成、SSL/TLS应用,强调安全存储及验证机制,确保通信加密和... 目录1. 秘密键(私钥)的理解与管理私钥的定义与重要性私钥的管理策略私钥的生成与存储2. 证书的创建与

Java操作Word文档的全面指南

《Java操作Word文档的全面指南》在Java开发中,操作Word文档是常见的业务需求,广泛应用于合同生成、报表输出、通知发布、法律文书生成、病历模板填写等场景,本文将全面介绍Java操作Word文... 目录简介段落页头与页脚页码表格图片批注文本框目录图表简介Word编程最重要的类是org.apach

Mysql实现范围分区表(新增、删除、重组、查看)

《Mysql实现范围分区表(新增、删除、重组、查看)》MySQL分区表的四种类型(范围、哈希、列表、键值),主要介绍了范围分区的创建、查询、添加、删除及重组织操作,具有一定的参考价值,感兴趣的可以了解... 目录一、mysql分区表分类二、范围分区(Range Partitioning1、新建分区表:2、分