当前位置: 首页 > 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;开发者可以控制网页中元素的颜色、字体…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案&#xff0c;如果正确地操作&#xff0c;重启Eureka集群中的节点&#xff0c;对已经注册的服务影响非常小&#xff0c;甚至可以做到无感知。 但如果操作不当&#xff0c;可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学&#xff08;silicon photonics&#xff09;的光波导&#xff08;optical waveguide&#xff09;芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中&#xff0c;光既是波又是粒子。光子本…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案&#xff1a;Java 字节码技术实战分享&#xff08;仅供学习&#xff09; 一、Aspose.PDF 简介二、说明&#xff08;⚠️仅供学习与研究使用&#xff09;三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...

Bean 作用域有哪些?如何答出技术深度?

导语&#xff1a; Spring 面试绕不开 Bean 的作用域问题&#xff0c;这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开&#xff0c;结合典型面试题及实战场景&#xff0c;帮你厘清重点&#xff0c;打破模板式回答&#xff0c…...

python爬虫——气象数据爬取

一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用&#xff1a; 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests&#xff1a;发送 …...

【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅

目录 前言 操作系统与驱动程序 是什么&#xff0c;为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中&#xff0c;我们在使用电子设备时&#xff0c;我们所输入执行的每一条指令最终大多都会作用到硬件上&#xff0c;比如下载一款软件最终会下载到硬盘上&am…...