当前位置: 首页 > news >正文

数据结构:单链表实现信息管理

一、函数声明部分

#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;//用于头结点&#xff0c;统计节点个数int data;//用于正常节点&#xff0c;存储数据};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

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

2024.9.26 Spark学习

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

我与Linux的爱恋:进程地址空间

​ ​ &#x1f525;个人主页&#xff1a;guoguoqiang. &#x1f525;专栏&#xff1a;Linux的学习 文章目录 1.来段代码2.引入最基本的理解3.尝试理解 1.来段代码 #include <stdio.h> #include <string.h> #include <unistd.h> #include <stdlib.h&g…...

C++的哲学思想

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

IO(输入输出流)

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

python爬虫:从12306网站获取火车站信息

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

Android个性名片界面的设计——约束布局的应用

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

Python 课程18-SQLAlchemy

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

Module did not self-register: ‘drivelist.node‘报错解决

报错如下&#xff1a; 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系统中有许多用于网络管理、监控和故障排除的工具。以下是一些常用的网络工具及其基本用法示例&#xff1a; 1. ping - 测试主机之间的网络连接。 ping www.google.com 2. netstat - 显示网络连接、路由表、接口统计等信息。 netstat -an # 显示所有网络连接和监听…...

Go容器化微服务系统实战

1-1 本课的go微服务有什么不同&#xff1f; 聚焦于容器化可观测的购物微服务系统实战&#xff0c;通过介绍Go语言的应用趋势、容器化优势及微服务适用性&#xff0c;旨在解决学习微服务过程中遇到的难点。课程内容涵盖微服务整体架构、技术工具框架及容器平台等关键技术&#…...

研究生三年概括

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、研一1.上学期2. 下学期 二、研二1.研二上2.研二下 三、研三1.研三上2.研三下 前言 不知道是谁说的了&#xff0c;人生的路很长&#xff0c;关键的就那么几…...

MongoDB在Linux系统中的安装与配置指南

在这篇文章中&#xff0c;我们将介绍如何在CentOS 7服务器上安装MongoDB&#xff0c;并通过DataX将数据从MongoDB迁移到MySQL数据库。这将包括MongoDB的安装、配置、数据准备以及使用DataX进行数据迁移的详细步骤。 MongoDB简介 MongoDB是一个高性能、开源、无模式的文档型数据…...

Linux下如何实现不用加路径调用启动脚本

配置Systemctl启动 Linux下便于启停服务&#xff0c;可以配置systemcl,配置如下描述 说明 只有root用户可配置,文件路径为 /etc/systemd/system/XXX.service&#xff0c;本文将用nginx.service举例说明 1、创建文件 首先创建一个nginx.service文件&#xff0c;用于配置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 输出依次如下&#xff1a; #include<iostream> #include<vector> #include<string>using namespace std;/* 字符分割函数 将传入…...

mysql的查询操作

MySQL的查询操作是数据库管理和数据检索的核心。通过SQL&#xff08;Structured Query Language&#xff0c;结构化查询语言&#xff09;语句&#xff0c;用户可以执行包括数据检索、数据插入、更新和删除在内的多种操作。在本文中&#xff0c;我们将重点讨论数据检索&#xff…...

0基础学前端 day2

大家好&#xff0c;欢迎来到无限大的频道。 今天继续带领大家开始0基础学前端。 一、CSS简介与基础 层叠样式表&#xff08;CSS&#xff0c;Cascading Style Sheets&#xff09;是用来进行网页样式和布局设计的语言。通过CSS&#xff0c;开发者可以控制网页中元素的颜色、字体…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

超短脉冲激光自聚焦效应

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

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。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 网站访问检测

一、基础环境准备&#xff08;两种安装方式都要做&#xff09; bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

DBAPI如何优雅的获取单条数据

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

tree 树组件大数据卡顿问题优化

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

HashMap中的put方法执行流程(流程图)

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