单链表核心操作代码

2024-09-07 03:20
文章标签 代码 操作 核心 单链

本文主要是介绍单链表核心操作代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

头插法建立单链表

代码:

void createListByHead(LinkList &L,int n){LNode *s;//移动指针s int x;//要插入的元素 L = (LinkList)malloc(sizeof(LNode));//创建头结点 L->next=NULL;//初始化头结点 for(int i=0;i<n;i++){scanf("&d",&x);//输入要插入的值 s=(LNode*)malloc(sizeof(LNode));//创建要插入的节点 s->data=x;//将要插入的值,赋给插入的节点 //头插法插入 s->next=L-next;L->next=s;}
}

尾插法建立单链表

代码:

void createListByTail(LinkList &L,int n){LNode *s,*r=L;//移动指针s和表尾指针r int x;//要插入的元素 L = (LinkList)malloc(sizeof(LNode));//创建头结点 for(int i=0;i<n;i++){scanf("%d",&x);s=(LNode*)malloc(sizeof(LNode));//创建要插入的节点 s->data=x;//将要插入的值,赋给插入的节点 //尾插法插入r->next=s;r=s;}r->next=NULL;//最后尾指针置空 
} 

按序号插找节点

代码:

LNode* getElemBypos(LinkList L ,int i){if(i==0) return L;//i为0,返回头结点 if(i<0) return NULL;//i小于0,返回空 int count =1;//计数,从1开始 LNode* p=L->next;//指向第一个节点 while(p!=NULL&&count<i){//遍历链表 p=p->next;count ++;} return p;//返回找到的节点 
} 

按值查找节点

代码:

LNode* locateElemByvalue(LinkLinst L,ElemType e){LNode* p=L->next;//指向第一个元素 while(p!=NULL&&p->data!=e){//遍历链表 p=p->next;} return p;//返回找到的节点 
} 

求有头节点的单链表长度

代码:

int length(LinkList L){int len=0;LNode* p=L->next;while(p!=NULL){len++;p=p->next;}return len;
} 

将值为x的节点插入到单链表的第i个位置

代码:

bool InsertNode(LinkList L,int i,ElemType x){LNode* p;int count=0p=L;while(p!=NULL && count<i-1){//找到第i-1个值 p=p->next;count++;}if(p==NULL) return false;//i值不合法 LNode* s=(LNode*)malloc(sizeof(LNode));s->data=x;x->next=p->next;p->next=s;return true;} 

将单链表的第i个位置上的节点删除

代码:

bool deleteNode(LinkList &L,int i,ElemType e){LNode* p=L;int count=0;while(p != NULL && count<i-1){//找到第i个值 p=p->next;count++;}if(p==NULL || p->next==NULL){//i值不合法 return false;}LNode* s=p->next;//临时指针,指向要删除的节点 e=s->data;p->next=s->next;//将要删除的取下来 free(s);//释放空间 return true;
} 

这篇关于单链表核心操作代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

Spring Boot 3.4.3 基于 Spring WebFlux 实现 SSE 功能(代码示例)

《SpringBoot3.4.3基于SpringWebFlux实现SSE功能(代码示例)》SpringBoot3.4.3结合SpringWebFlux实现SSE功能,为实时数据推送提供... 目录1. SSE 简介1.1 什么是 SSE?1.2 SSE 的优点1.3 适用场景2. Spring WebFlu

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

java之Objects.nonNull用法代码解读

《java之Objects.nonNull用法代码解读》:本文主要介绍java之Objects.nonNull用法代码,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录Java之Objects.nonwww.chinasem.cnNull用法代码Objects.nonN

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

在C#中调用Python代码的两种实现方式

《在C#中调用Python代码的两种实现方式》:本文主要介绍在C#中调用Python代码的两种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#调用python代码的方式1. 使用 Python.NET2. 使用外部进程调用 Python 脚本总结C#调

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时