单链表的基本操作实现

定义

链表节点长这个样子,数据域data指针域next指向下一个结点

typedef struct lnode {int data;struct lnode *next;
}lnode ,*linklist;

初始化


/*初始化*/ 
linklist f1(){linklist l=(linklist)malloc(sizeof(lnode));l->next=NULL;return l;
}int main(){linklist l;l=f1();
}

初始化的结果,头结点为l的空链表

给链表输入数据

头插法

void f2(lnode*l,int n){for(int i=0;i<n;i++){lnode* p=(linklist)malloc(sizeof(lnode));printf("请输入第%d个数",i+1);scanf("%d",&p->data);p->next=l->next;l->next=p;}F();
}

头插法插入元素链表元素是相反的

改良一下

void f2(lnode*l,int n){for(int i=0,j=n;i<n;i++,j--){lnode* p=(linklist)malloc(sizeof(lnode));printf("请输入第%d个数",j);scanf("%d",&p->data);p->next=l->next;l->next=p;}F();
}

尾插法

void f4(linklist l,int n){lnode *r;//尾指针r=l; for(int i=0;i<n;i++){lnode* p=(linklist)malloc(sizeof(lnode));printf("请输入第%d个数",i+1);scanf("%d",&p->data);p->next=NULL;r->next=p;r=p;		} F();
}

查找

按值查找

void f5(linklist l, int e) {lnode *p;p = l;int i = 1;while (p) {if (p->data == e) {printf("%d 在第 %d 个位置", e, i);break;}p = p->next;i++;}if (!p) {printf("元素 %d 不在链表中。", e);}F();
}

按位查找

void f6(linklist l,int i){int length=1;lnode *p,*q;int ii=1;p = l;q=l->next;while(p){p=p->next;length++;}if(i>length)printf("位置输入不合法");while (q){if(ii==i){printf("第%d个是%d",i,q->data);}q=q->next;ii++;}F();
}

给指定位置i插入元素e

void f7(linklist l,int i,int e){lnode *p=(lnode*)malloc(sizeof(lnode));p->data=e;for(int ii=1;ii<i;ii++)l=l->next;p->next=l->next;l->next=p;
}

删除指定位置的元素

void f8(linklist l,int i){lnode *p=(lnode*)malloc(sizeof(lnode));for(int ii=1;ii<i;ii++)l=l->next;p=l;l->next=l->next->next;	
}

完整代码

#include <stdio.h>
#include <stdlib.h>
typedef struct lnode {int data;struct lnode *next;
}lnode ,*linklist;
void F(){printf("\n");printf("------------------------");printf("\n");
}
/*初始化*/ 
linklist f1(){linklist l=(linklist)malloc(sizeof(lnode));l->next=NULL;return l;
}
/*头插法*/
void f2(lnode*l,int n){for(int i=0,j=n;i<n;i++,j--){lnode* p=(linklist)malloc(sizeof(lnode));printf("请输入第%d个数",j);scanf("%d",&p->data);p->next=l->next;l->next=p;}F();
}
/*输出链表*/
void f3 (linklist l){lnode *p;p=l->next;//跳过头结点 printf("链表是");while(p){printf("%d ",p->data);p=p->next;}F();
}
/*尾插法*/
void f4(linklist l,int n){lnode *r;//尾指针r=l; for(int i=0;i<n;i++){lnode* p=(linklist)malloc(sizeof(lnode));printf("请输入第%d个数",i+1);scanf("%d",&p->data);p->next=NULL;r->next=p;r=p;		} F();
}
/*按值查找 */ 
void f5(linklist l, int e) {lnode *p;p = l;int i = 1;while (p) {if (p->data == e) {printf("%d 在第 %d 个位置", e, i);break;}p = p->next;i++;}if (!p) {printf("元素 %d 不在链表中。", e);}F();
}
/*按位查找*/
void f6(linklist l,int i){int length=1;lnode *p,*q;int ii=1;p = l;q=l->next;while(p){p=p->next;length++;}if(i>length)printf("位置输入不合法");while (q){if(ii==i){printf("第%d个是%d",i,q->data);}q=q->next;ii++;}F();
}
/*给指定位置i插入元素e*/
void f7(linklist l,int i,int e){lnode *p=(lnode*)malloc(sizeof(lnode));p->data=e;for(int ii=1;ii<i;ii++)l=l->next;p->next=l->next;l->next=p;
}
/*删除指定位置的元素*/
void f8(linklist l,int i){lnode *p=(lnode*)malloc(sizeof(lnode));for(int ii=1;ii<i;ii++)l=l->next;p=l;l->next=l->next->next;	
}
int main(){linklist l;l=f1();int a;printf("请输入链表l的长度");scanf("%d",&a);
//	f2(l,a);
//	f3(l);f4(l,a);f3(l);//按值查找 
//	int e;
//	q=l->next;
//	scanf("%d",&e);
//	f5(l,e);//按位查找
//	int i;
//	printf("请输入要查找的位序");
//	scanf("%d",&i);
//	f6(l,i);//给指定位置i插入元素e
//	int i,e;
//	printf("请输入要插入的位序");
//	scanf("%d",&i);
//	printf("请输入要插入的数字");
//	scanf("%d",&e);
//	f7(l,i,e);
//	f3(l);//删除指定位置的元素
//	int i;
//	printf("请输入要删除的位序");
//	scanf("%d",&i);
//	f8(l,i);
//	f3(l);
}

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ 优先算法——复写零(双指针)

目录 题目&#xff1a;复写零 1. 题目解析 2. 算法原理 一. 先找到最后一个“复写”数 处理边界情况 二. 复写操作 3. 代码实现 题目&#xff1a;复写零 1. 题目解析 题目截图&#xff1a; 该题目要求的与移动零相似&#xff0c;都要在一个数组上进行操作&#xff0c;…

使用linuxdeployqt打包Qt程序问题及解决方法

dpkg: 处理归档 libmysqlclient18_5.6.25-0ubuntu1_amd64.deb (--install)时出错&#xff1a; 预依赖问题 - 将不安装libmysqlclient18:amd64 在处理时有错误发生&#xff1a; libmysqlclient18_5.6.25-0ubuntu1_amd64.deb下载libmysqlclient18/5.6.25 libmysqlclient18/5.6…

配置BGP与IGP交互和路由自动聚合示例

组网需求 如图所示&#xff0c;用户将网络划分为AS65008和AS65009&#xff0c;在AS65009内&#xff0c;使用IGP协议来计算路由&#xff08;该例使用OSPF做为IGP协议&#xff09;。要求实现两个AS之间的互相通信。 配置思路 采用如下的思路配置BGP与IGP交互&#xff1a; 在AR…

基于SpringBoot的健身房系统的设计与实现(源码+定制+开发)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

flex 布局比较容易犯的错误 出现边界超出的预想的情况

flex 布局比较容易犯的错误 出现边界超出的预想的情况 如图 当使用flex布局时&#xff0c;设置flex:1 或者是flex:x 时 如果没有多层嵌套的flex布局&#xff0c;内容超出flex&#xff1a;1规定的后&#xff0c;仍然会撑大融器 在flex:1 处设置 overflow:hidden 即可超出后不显…

vscode | 开发神器vscode快捷键删除和恢复

目录 快捷键不好使了删除快捷键恢复删除的快捷键 在vscode使用的过程中&#xff0c;随着我们自身需求的不断变化&#xff0c;安装的插件将会持续增长&#xff0c;那么随之而来的就会带来一个问题&#xff1a;插件的快捷键重复。快捷键重复导致的问题就是快捷键不好使了&#xf…

商家如何在高德地图上申请店铺入驻?

在当今数字化时代&#xff0c;互联网成为了消费者寻找商品和服务的主要渠道。高德地图作为国内领先的地图导航软件&#xff0c;不仅拥有庞大的用户基础&#xff0c;还为商家提供了优质的店铺展示平台。因此&#xff0c;对于实体店商家而言&#xff0c;入驻高德地图是提升店铺曝…

Cpp多态机制的深入理解(20)

文章目录 前言一、多态的概念二、多态的定义与实现两个必要条件虚函数虚函数的重写重写的三个例外override 和 final重载、重写(覆盖)、重定义(隐藏) 三、抽象类概念接口继承和实现继承 四、多态的原理虚表和虚表指针虚函数调用过程动态绑定与静态绑定 五、那...那单继承甚至多…

数字IC后端实现之Innovus Place跑完density爆涨案例分析

下图所示为咱们社区a7core后端训练营学员的floorplan。 数字IC后端实现 | Innovus各个阶段常用命令汇总 该学员跑placement前density是59.467%&#xff0c;但跑完place后density飙升到87.68%。 仔细查看place过程中的log就可以发现Density一路飙升&#xff01; 数字IC后端物…

大数据新视界 -- 大数据大厂之大数据环境下的网络安全态势感知

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

如何解决mingw64安装后配置完环境变量仍然执行不了gcc命令以及Vscode中的环境路径配置中找不到gcc

配置环境变量教程很多&#xff0c;就不多说&#xff0c;说下耗费一小时解决的问题&#xff1a;mingw64安装后配置完环境变量仍然执行不了gcc命令 配置 了N次了&#xff0c;都还是在终端找不到指令&#xff0c;然后&#xff0c;将路径放到第一个&#xff0c;然后再看下&#xf…

【AI日记】24.11.01 LangChain、openai api和github copilot

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】 工作 工作1 内容&#xff1a;学习deeplearning.ai的免费课程地址&#xff1a;LangChain Chat with Your DataB站地址&#xff1a;https://www.bilibili.com/video/BV148411D7d2时间&#xff1a;2小时评估&am…

位运算算法及习题 ,丢弃的数字 , 两整数之和 ,只出现一次的数字II

文章目录 位运算基础1.基础位运算2. 给一个数n,确定他的二进制位中的第x为是0还是13.将一个数n的二进制表示的第x位修改为14.将一个数n的二进制表示的第x位修改为05.位图的思想6. 提取一个数n二进制表示中最右侧的17. 去掉一个数n二进制表示中最右侧的18. 异或运算的运算律 丢弃…

使用form表单的action提交并接收后端返回的消息

使用form表单的action提交表单是同步提交的方式&#xff0c;会跳转页面&#xff0c;所以无法获取后端返回来到消息。这样描述或许没有太大感觉&#xff0c;如果我要通过表单的方式上传文件&#xff0c;并接收后台返回来的响应数据&#xff1b;这样说是不是就感同深受了呢。 1.…

曹操出行借助 ApsaraMQ for Kafka Serverless 提升效率,成本节省超 20%

本文整理于 2024 年云栖大会主题演讲《云消息队列 ApsaraMQ Serverless 演进》&#xff0c;杭州优行科技有限公司消息中间件负责人王智洋分享 ApsaraMQ for Kafka Serverless 助力曹操出行实现成本优化和效率提升的实践经验。 曹操出行&#xff1a;科技驱动共享出行未来 曹操…

2024年10月文章一览

2024年10月编程人总共更新了21篇文章&#xff1a; 1.2024年9月文章一览 2.《Programming from the Ground Up》阅读笔记&#xff1a;p147-p180 3.《Programming from the Ground Up》阅读笔记&#xff1a;p181-p216 4.《Programming from the Ground Up》阅读笔记&#xff…

【果蔬识别】Python+卷积神经网络算法+深度学习+人工智能+机器学习+TensorFlow+计算机课设项目+算法模型

一、介绍 果蔬识别系统&#xff0c;本系统使用Python作为主要开发语言&#xff0c;通过收集了12种常见的水果和蔬菜&#xff08;‘土豆’, ‘圣女果’, ‘大白菜’, ‘大葱’, ‘梨’, ‘胡萝卜’, ‘芒果’, ‘苹果’, ‘西红柿’, ‘韭菜’, ‘香蕉’, ‘黄瓜’&#xff09;…

Partition架构

优质博文&#xff1a;IT-BLOG-CN Partition架构 【1】结构&#xff1a; Region至少3个Zone&#xff0c;Zone内至少两个Partition&#xff0c;Partition内至少1个K8S Member Cluster&#xff1b; 【2】故障域&#xff1a; 故障域及核心链路至少Zone内收敛&#xff0c;甚至Part…

xlrd.biffh.XLRDError: Excel xlsx file; not supported

文章目录 一、问题报错二、报错原因三、解决思路四、解决方法 一、问题报错 在处理Excel文件时&#xff0c;特别是当我们使用Python的xlrd库来读取.xlsx格式的文件&#xff0c;偶尔会遇到这样一个错误&#xff1a;“xlrd.biffh.XLRDError: Excel xlsx file; not supported”。…

Java XML一口气讲完!(p≧w≦q)

Java XML API Java XML教程 - Java XML API SAX API 下面是关键的SAX API的摘要: 类用法SAXParserFactory创建由系统属性javax.xml.parsers.SAXParserFactory确定的解析器的实例。SAXParserSAXParser接口定义了几个重载的parse()方法。SAXReaderSAXParser包装一个SAXReader…