数据结构:单链表实现信息管理
一、函数声明部分
#ifndef __LINK_H__
#define __LINK_H__
#include <myhead.h>
typedef struct Link1
{union{int len;//用于头结点,统计节点个数int data;//用于正常节点,存储数据};struct Link1 *next;//指针域
}Link,*Plink;/**********函数声明**********/
//1.创建头结点
Plink create();
//1.1头插法
int front_insert(Plink l, int m);
//1.2尾插法
int last_insert(Plink l, int m);
//2.输出
void output_link(Plink l);
//3.任意位置插入一个节点
void anywhere_insert(Plink l, int pos, int m);
//4.任意位置删除一个节点
void anywhere_delete(Plink l, int pos);
//5.任意位置查找一个节点
void anywhere_search(Plink l, int pos);
//6.任意位置修改一个节点
void anywhere_rebuild(Plink l, int pos, int m);#endif
二、函数(功能)实现部分
1、创建头节点
//创建头结点
Plink create()
{Plink p = malloc(sizeof(Link));if(p == NULL){printf("申请头结点失败!");return NULL;}p->len = 0;p->next = NULL;return p;
}
2、头插法插入节点
//头插法
int front_insert(Plink l , int m)
{if(NULL == l){printf("单链表不存在!\n");return -1;}Plink p = malloc(sizeof(Link));p->data = m;//把数据存入新节点p->next = l->next; //新节点指向旧的第一个节点l->next = p; //头结点指向新节点l->len++; //节点个数+1return 0;
}
3、尾插法插入节点
//尾插法
int last_insert(Plink l, int m)
{if(NULL == l){printf("单链表不存在!\n");return -1;}Plink t = l;for(int i=0; i<l->len; i++){t = t->next;}Plink p = malloc(sizeof(Link));p->data = m; //把数据存入新节点t->next = p; //最后一个节点指向新节点p->next = NULL; //新节点指向空l->len++; //节点个数+1return 0;
}
4、遍历输出
//输出
void output_link(Plink l)
{Plink t = l;for(int i=0; i<l->len; i++){ //循环len次t = t->next;printf("%d\t",t->data); //数据域}printf("\n");
}
5、任意位置插入一个节点
//3.任意位置插入一个节点
void anywhere_insert(Plink l, int pos, int m)
{if(NULL == l || pos<1 || pos>l->len+1){printf("插入失败!\n");return;}Plink t = l;for(int i=1; i<pos; i++){t = t->next;}Plink p = malloc(sizeof(Link));p->data = m;p->next = t->next;t->next = p;l->len++;
}
6、任意位置删除一个节点
//4.任意位置删除一个节点
void anywhere_delete(Plink l, int pos)
{if(NULL == l || pos<1 || pos>l->len){printf("不允许删除!\n");return;}Plink t = l;for(int i=1; i<pos; i++){t = t->next;}Plink q = t->next; //保留要删除的节点t->next = t->next->next; //删除链接l->len--;free(q); //删除后释放q = NULL; //置空
}
7、任意位置查找一个节点
//5.任意位置查找一个节点
void anywhere_search(Plink l, int pos)
{if(NULL == l || pos<1 || pos>l->len){printf("查找失败!\n");return;}Plink t = l;for(int i=1; i<=pos; i++){t = t->next;}printf("第%d个节点的数据是:%d\n",pos, (t->data) );
}
8、任意位置修改一个节点
//6.任意位置修改一个节点
void anywhere_rebuild(Plink l, int pos, int m)
{if(NULL==l || pos<1 || pos>l->len){printf("修改失败!\n");return;}Plink t = l;for(int i=1; i<=pos; i++){t = t->next;}t->data = m;
}
三、主函数部分
#include"link.h"int main(int argc, const char *argv[])
{int a[10]={0,1,2,3,4,5,6,7,8,9};//1.创建头结点Plink l = create();//1.1头插法for(int i=0; i<10; i++){front_insert(l, a[i]);}output_link(l);//1.2尾插法for(int i=0; i<10; i++){last_insert(l, a[i]); }output_link(l);//3.任意位置插入一个节点anywhere_insert(l, 5, 666);output_link(l);//4.任意位置删除一个节点anywhere_delete(l, 8);output_link(l);//5.任意位置查找一个节点anywhere_search(l, 10);//6.任意位置修改一个节点anywhere_rebuild(l ,2, 999);output_link(l);free(l); //释放内存l = NULL; //置空return 0;
}
相关文章:
数据结构:单链表实现信息管理
一、函数声明部分 #ifndef __LINK_H__ #define __LINK_H__ #include <myhead.h> typedef struct Link1 {union{int len;//用于头结点,统计节点个数int data;//用于正常节点,存储数据};struct Link1 *next;//指针域 }Link,*Plink;/**********函数声…...

【Linux】解锁文件描述符奥秘,高效缓存区的实战技巧
fd和缓冲区 1. 文件描述符fd1.1. 概念与本质1.2. 打开文件的管理1.3. 一切皆文件的理解1.4. 分配规则1.5. 重定向的本质1.5.1. dup2 2. FILE中的缓冲区2.1. 概念2.2. 存在的原因2.3. 类型(刷新方案)2.4. 存放的位置2.4.1. 代码证明、现象解释 2.5. 模拟C标准库中的方法 1. 文件…...

EmguCV学习笔记 VB.Net 11.9 姿势识别 OpenPose
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它向C#和VB.NET开发者提供了OpenCV库的大部分功能。 教程VB.net版本请访问…...

2024.9.26 Spark学习
资料: Spark基础入门-第一章-1.1-Spark简单介绍_哔哩哔哩_bilibili (1)基础知识 Apache Spark 是用于大规模数据(large-scale data)处理的统一分析引擎。 分布式处理数据 PySpark模块 Spark 和 Hadoop 有区别&…...

我与Linux的爱恋:进程地址空间
🔥个人主页:guoguoqiang. 🔥专栏:Linux的学习 文章目录 1.来段代码2.引入最基本的理解3.尝试理解 1.来段代码 #include <stdio.h> #include <string.h> #include <unistd.h> #include <stdlib.h&g…...

C++的哲学思想
C的哲学思想 文章目录 C的哲学思想💡前言💡C的哲学思想☁️C底层不应该基于任何其他语言(汇编语言除外)☁️只为使用的东西付费(不需要为没有使用到的语言特性付费)☁️以低成本提供高级抽象(更…...

IO(输入输出流)
1.IO a.介绍 i.IO是指Input和Output,即输入和输出,以内存为中心: 1.Input是指从外部读入数据到内存。 2.Output是指把数据从内存输出到外部。 ii.IO流是一种顺序读写数据的模式,它的特点是单向流动。数据类似自…...

python爬虫:从12306网站获取火车站信息
代码逻辑 初始化 (init 方法): 设置请求头信息。设置车站版本号。 同步车站信息 (synchronization 方法): 发送GET请求获取车站信息。返回服务器响应的文本。 提取信息 (extract 方法): 从服务器响应中提取车站信息字符串。去掉字符串末尾的…...

Android个性名片界面的设计——约束布局的应用
节选自《Android应用开发项目式教程》,机械工业出版社,2024年7月出版 做最简单的安卓入门教程,手把手视频、代码、答疑全配齐 【任务目标】 使用约束布局、TextView控件实现一个个性名片界面的设计,界面如图1所示。 图1 个性名片…...

Python 课程18-SQLAlchemy
前言 SQLAlchemy 是一个功能强大的 Python SQL 工具包和对象关系映射(ORM)库,它使得开发者能够通过 Python 代码与数据库进行交互,而不必编写 SQL 查询。SQLAlchemy 提供了对多种数据库的支持,包括 MySQL、PostgreSQL…...

Module did not self-register: ‘drivelist.node‘报错解决
报错如下: node_modules/bindings/bindings.js:121throw e;^Error: Module did not self-register: xxxx/node_modules/drivelist/build/Release/drivelist.node.at process.func [as dlopen] (electron/js2c/asar.js:140:31)at Object.Module._extensions..node (…...

zabbix基本概念与组件
文章目录 一、zabbix简介二、zabbix构成三、zabbix监控对象四、zabbix常用术语五、 Zabbix 6.0 新特性1.Zabbix server高可用防止硬件故障或计划维护期的停机2.Kubernetes系统从多个维度采集指标 六、zabbix 工作原理1、主动模式2、…...
Linux常用网络工具及示例
Linux系统中有许多用于网络管理、监控和故障排除的工具。以下是一些常用的网络工具及其基本用法示例: 1. ping - 测试主机之间的网络连接。 ping www.google.com 2. netstat - 显示网络连接、路由表、接口统计等信息。 netstat -an # 显示所有网络连接和监听…...

Go容器化微服务系统实战
1-1 本课的go微服务有什么不同? 聚焦于容器化可观测的购物微服务系统实战,通过介绍Go语言的应用趋势、容器化优势及微服务适用性,旨在解决学习微服务过程中遇到的难点。课程内容涵盖微服务整体架构、技术工具框架及容器平台等关键技术&#…...
研究生三年概括
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、研一1.上学期2. 下学期 二、研二1.研二上2.研二下 三、研三1.研三上2.研三下 前言 不知道是谁说的了,人生的路很长,关键的就那么几…...

MongoDB在Linux系统中的安装与配置指南
在这篇文章中,我们将介绍如何在CentOS 7服务器上安装MongoDB,并通过DataX将数据从MongoDB迁移到MySQL数据库。这将包括MongoDB的安装、配置、数据准备以及使用DataX进行数据迁移的详细步骤。 MongoDB简介 MongoDB是一个高性能、开源、无模式的文档型数据…...
Linux下如何实现不用加路径调用启动脚本
配置Systemctl启动 Linux下便于启停服务,可以配置systemcl,配置如下描述 说明 只有root用户可配置,文件路径为 /etc/systemd/system/XXX.service,本文将用nginx.service举例说明 1、创建文件 首先创建一个nginx.service文件,用于配置ngi…...

编程练习2 数据单元的变量替换
示例1: 1,2<A>00 示例2: 1,2<A>00,3<A>00 示例3: <B>12,1,2<B>1 示例4: <B<12,1 输出依次如下: #include<iostream> #include<vector> #include<string>using namespace std;/* 字符分割函数 将传入…...
mysql的查询操作
MySQL的查询操作是数据库管理和数据检索的核心。通过SQL(Structured Query Language,结构化查询语言)语句,用户可以执行包括数据检索、数据插入、更新和删除在内的多种操作。在本文中,我们将重点讨论数据检索ÿ…...
0基础学前端 day2
大家好,欢迎来到无限大的频道。 今天继续带领大家开始0基础学前端。 一、CSS简介与基础 层叠样式表(CSS,Cascading Style Sheets)是用来进行网页样式和布局设计的语言。通过CSS,开发者可以控制网页中元素的颜色、字体…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...

超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...

全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...

DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...

tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...

HashMap中的put方法执行流程(流程图)
1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...