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

02.05

1.单链表

main

#include "1list_head.h"
int main(int argc, const char *argv[])
{
//创建链表之前链表为空Linklist head=NULL;int n;datatype element;printf("please enter n:");scanf("%d",&n);for(int i=0;i<n;i++){printf("please enter %d element:",i+1);scanf("%d",&element);//11head=insert_rear(element,head);		}Output(head);//头删head=delete_head(head);Output(head);//尾删		head=delete_rear(head);Output(head);//按位置插入int pos;printf("please enter insert pos:");scanf("%d",&pos);printf("please enter insert element:");scanf("%d",&element);head=insert_pos(pos,element,head);Output(head);//按位置删除printf("please enter delete pos:");scanf("%d",&pos);head=delete_pos(pos,head);Output(head);	return 0;
}

list.c

#include "1list_head.h"
//创建链表节点
Linklist create_node()
{Linklist s=(Linklist)malloc(sizeof(struct Node));if(NULL==s)return NULL;//s节点的数据域清0s->data=0;s->next=NULL;return s;
}
//尾插
Linklist insert_rear(datatype element,Linklist head)
{Linklist s=create_node();if(NULL==s)return head;s->data=element;if(NULL ==head){head=s;}else {Linklist p=head;while(p->next!=NULL){p=p->next;}p->next=s;}return head;}
//头插
Linklist insert_head(datatype element,Linklist head)
{Linklist s=create_node();if(NULL==s)return head;s->data=element;if(NULL==head){head=s;}else {s->next=head;head=s;}return head;
}
//尾删
Linklist delete_rear(Linklist head)
{if(NULL ==head)return head;if(NULL ==head->next){free(head);head=NULL;}else {Linklist del=head;while(del->next->next!=NULL){del=del->next;}free(del->next);del->next=NULL;}return head;
}
//头删
Linklist delete_head(Linklist head)
{if(NULL==head){return head;}else if(head->next==NULL){Linklist p=head;free(p);p=NULL;}else {Linklist del=head;head=head->next;free(del);del=NULL;}return head;
}
//按位置插入
Linklist insert_pos(int pos,datatype element,Linklist head)
{if( pos<1 || pos>Length(head)+1)return head;if(NULL==head || pos==1)//判断是否只有一个节点head=insert_head(element,head);else {Linklist p=head;for(int i=1;i<pos-1;i++){p=p->next;}Linklist s=create_node();if(NULL==s)return head;s->data=element;s->next=p->next;p->next=s;}return head;}
//按位置删除
Linklist delete_pos(int pos,Linklist head)
{if(NULL==head || pos<1 || pos>Length(head)){return head;}if(head->next==NULL ||pos==1)//只有一个节点{head=delete_head(head);}else //存在多个节点 >=2{Linklist p=head;for(int i=1;i<pos-1;i++){p=p->next;}Linklist q=p->next;p->next=q->next;free(q);q=NULL;}return head;
}
//遍历
int Output(Linklist head)
{//1.判断链表为空if(NULL==head)return -1;//2,循环输出Linklist p=head;while(p!=NULL){printf("%d\t",p->data);p=p->next;//后移}puts("");return 0;
}
//计算长度
int Length(Linklist head)
{int count=0;Linklist p=head;while(p!=NULL){count++;p=p->next;}return count;
}

head

#ifndef __HEAD_H__
#define __HEAD_H__
#include "myhead.h"
typedef int datatype;
//创建节点结构体
typedef struct Node
{//数据域:存储数据元素datatype data;//指针域:存储下一个节点的地址struct Node *next;
}*Linklist;//创建链表节点
Linklist create_node();//尾插
Linklist insert_rear(datatype element,Linklist head);
//头插
Linklist insert_head(datatype element,Linklist head);
//尾删
Linklist delete_rear(Linklist head);
//头删
Linklist delete_head(Linklist head);
//按位置插入
Linklist insert_pos(int pos,datatype element,Linklist head);
//按位置删除
Linklist delete_pos(int pos,Linklist head);
//遍历
int Output(Linklist head);
//计算长度
int Length(Linklist head);#endif

2.双向

main

#include "doublelink_head.h"
int main(int argc, const char *argv[])
{Doublelink head=NULL;int n;datatype element;printf("please enter n:");scanf("%d",&n);for(int i=0;i<n;i++){printf("please enter %d element:",i+1);scanf("%s",element);head=doublelink_insert_rear(element,head);}Output(head);//头删head=delete_head(head);Output(head);//尾删head=delete_rear(head);Output(head);return 0;
}

list.c

#include "doublelink_head.h"
//创建节点
Doublelink create_node()
{Doublelink s=(Doublelink)malloc(sizeof(struct Node));if(NULL==s)return NULL;strcpy(s->data,"");s->next=s->priv=NULL;return s;
}
//头插
Doublelink double_insert_head(datatype element,Doublelink head)
{Doublelink s=create_node();if(s==NULL)return head;strcpy(s->data,element);if(NULL ==head)head=s;else{s->next=head;head->priv=s;head=s;}return head;}
//遍历
int Output(Doublelink head)
{if(NULL ==head)return -1;//正向puts("正向遍历\n");Doublelink p=head;while(p->next!=NULL){printf("%s\t",p->data);p=p->next;}printf("%s\t",p->data);//逆向puts("\n逆向遍历");while(p!=NULL){printf("%s\t",p->data);p=p->priv;	}puts("");return 0;
}//尾插
Doublelink doublelink_insert_rear(datatype element,Doublelink head)
{Doublelink s=create_node();if(s==NULL)return head;strcpy(s->data,element);if(NULL ==head)head=s;else{Doublelink p=head;while(p->next!=NULL){p=p->next;}p->next=s;s->priv=p;}return head;}
//头删
Doublelink delete_head(Doublelink head)
{if(NULL==head)return head;Doublelink q=head;head=head->next;if(head!=NULL)head->priv=NULL;free(q);q=NULL;return head;
}
//尾删
Doublelink delete_rear(Doublelink head)
{if(NULL ==head)return head;if(head->next==NULL){free(head);head=NULL;}else //>=2{Doublelink p=head;while(p->next!=NULL){p=p->next;}p->priv->next=NULL;free(p);p=NULL;}return head;
}

head.h


#ifndef __DOUBLELINK_HEAD_H__
#define __DOUBLELINK_HEAD_H__
#include "myhead.h"typedef char datatype[30];//datatype-->char [30]
//定义结构体
typedef struct Node
{//数据域:存储数据元素datatype data;//指针域:存储下一个节点的地址struct Node *next;//指针域:存储上一个节点的地址struct Node *priv;
}*Doublelink;int Output(Doublelink head);
Doublelink double_insert_head(datatype element,Doublelink head);
Doublelink create_node();
Doublelink doublelink_insert_rear(datatype element,Doublelink head);
Doublelink delete_head(Doublelink head);
Doublelink delete_rear(Doublelink head);
#endif

相关文章:

02.05

1.单链表 main #include "1list_head.h" int main(int argc, const char *argv[]) { //创建链表之前链表为空Linklist headNULL;int n;datatype element;printf("please enter n:");scanf("%d",&n);for(int i0;i<n;i){printf("ple…...

【C语言】贪吃蛇 详解

该项目需要的技术要点 C语言函数、枚举、结构体、动态内存管理、预处理指令、链表、Win32API等。 由于篇幅限制 和 使知识模块化&#xff0c; 若想了解 使用到的 Win32API 的知识&#xff1a;请点击跳转&#xff1a;【Win32API】贪吃蛇会使用到的 Win32API 目录 1. 贪吃蛇游…...

Mysql MGR搭建

一、架构说明 1.1 架构概述 MGR(单主)VIP架构是一种分布式数据库架构&#xff0c;其中数据库系统采用单主复制模式&#xff0c; 同时引入虚拟IP(VIP)来提高可用性和可扩展性。 这种架构结合了传统主从复制和虚拟IP技术的优势&#xff0c;为数据库系统提供了高可用、 高性能和…...

新火种AI|寒武纪跌落神坛!七年连亏50亿,AI芯片第一股不行了吗?

作者&#xff1a;文子 编辑&#xff1a;小迪 连年亏损&#xff0c;烧钱不止&#xff0c;寒武纪终是走到悬崖边缘。 寒武纪市值腰斩&#xff0c;连续七年累亏50亿 继连续六年亏损之后&#xff0c;寒武纪又迎来第七年亏损。 1月30日晚&#xff0c;寒武纪正式对外发布2023年年…...

three.js CSS3DObject、CSS2DObject、CSS3DSprite、Sprite的作为标签的区别

CSS3DObject、CSS2DObject、CSS3DSprite、Sprite的作为标签的区别 是否面向相机场景缩放时&#xff0c;是否会跟随是否会被模型遮挡CSS2DObject是否否CSS3DObject否是否CSS3DSprite是是是Sprite是是是 CSS3DObject 和 CSS3DRenderer 搭配来渲染标签&#xff1b; CSS2DObject …...

第7节、双电机直线运动【51单片机+L298N步进电机系列教程】

↑↑↑点击上方【目录】&#xff0c;查看本系列全部文章 摘要&#xff1a;前面章节主要介绍单个电机控制&#xff0c;本节内容介绍两个电机完成Bresenham直线运动 一、Bresenham直线算法介绍 Bresenham直线算法由Jack Elton Bresenham于1962年在IBM开发&#xff0c;最初用于计…...

【C语言 - 哈希表 - 力扣 - 相交链表】

相交链表题目描述 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交&#xff1a; 题目数据 保证 整个链式结构中不存在环。 注意&#xff0…...

C++参悟:内存管理-unique_ptr

内存管理-unique_ptr 一、概述二、成员函数1. 构造、析构函数函数1. 构造函数2. 析构函数3. 赋值号 2. 修改器1. release&#xff08;&#xff09;2. reset()3. swap() 3. 观察器1. get()2. get_deleter3. bool 运算 一、概述 std::unique_ptr 是通过指针占有并管理另一对象&a…...

【征稿已开启】第五大数据、人工智能与软件工程国际研讨会(ICBASE 2024)

第五大数据、人工智能与软件工程国际研讨会&#xff08;ICBASE 2024&#xff09; 2024 5th International Conference on Big Data & Artificial Intelligence & Software Engineering 2024年09月20-22日 | 中国温州 第五届大数据、人工智能与软件工程国际研讨会&…...

Vue3父子组件传参

一&#xff0c;父子组件传参&#xff1a; 应用场景&#xff1a;父子组件传参 Vue3碎片&#xff1a;defineEmits&#xff0c;defineProps&#xff0c;ref&#xff0c;reactive&#xff0c;onMounted 1.父组件传子组件 a.父组件传参子组件 import { ref} from vue import OnChi…...

SpringBoot整理-微服务

Spring Boot 在构建微服务架构的应用中发挥着关键作用。微服务是一种将大型复杂应用拆分为更小、更容易管理和维护的服务的架构风格。每个服务通常围绕特定的业务功能构建,并且可以独立部署、扩展和更新。Spring Boot 提供了一系列特性和工具,使得创建和维护这些独立服务变得…...

服务器和CDN推荐

简介 陆云Roovps是一家成立于2021年的主机服务商&#xff0c;主要业务是销售美国服务器、香港服务器及国外湖北十堰高防服务器&#xff0c;还有相关CDN产品。&#xff08; 地址&#xff1a;roovps&#xff09; 一、相关产品...

c#读取csv文件中的某一列的数据

chat8 (chat779.com) 上面试GPT-3.5,很好的浏览网站&#xff0c;输入问题&#xff0c;可得到答案。 问题1&#xff1a;c#如何在csv中读取某一列数据 解答方案&#xff1a;在 C#中&#xff0c;你可以使用File.ReadAllLines来读取CSV中的所有行&#xff0c;然后逐行解析每一行…...

不懂快团团大团长对接?凭什么快团团的钱轮到你赚?

对接头部快团团大团长&#xff0c;让快团团大团长帮你卖货 分享几个推品的关键词&#xff1a; 1.推品的内容&#xff1a;产品实拍图核心卖点 不要上来就发笔记&#xff0c;你的产品图和文案还没吸引人&#xff0c;就发笔记没有人看。 可以先发你产品的简短卖点和图片&#xff…...

OpenGL 入门(九)—Material(材质)和 光照贴图

文章目录 材质设置材质光的属性脚本实现 光照贴图漫反射贴图高光反射贴图 材质 材质本质是一个数据集&#xff0c;主要功能就是给渲染器提供数据和光照算法。 如果我们想要在OpenGL中模拟多种类型的物体&#xff0c;我们必须针对每种表面定义不同的材质(Material)属性。 我们…...

jmeter-03界面介绍

文章目录 主界面介绍工具栏介绍测试计划介绍线程组介绍线程组——选择测试计划&#xff0c;右键-->添加-->线程-->线程组1.线程数2.准备时长(Ramp-up)3.循环次数4.same user on each iteratio5.调度器 主界面介绍 工具栏介绍 新建测试计划&#xff1a;创建一个空白的测…...

探究 MySQL 中使用 where 1=1 是否存在性能影响

文章目录 前言聊聊 mybatis 中多条件拼接的两种常规写法where 11使用 <where> 标签 性能影响where 11<where> 标签 总结个人简介 前言 最近在项目中使用 mybatis 写 SQL 使用了 where 11 来简化多条件拼接的写法&#xff0c;案例如下&#xff0c;借此聊聊多条件拼…...

VSCode无法启动:Waiting for server log...

问题基本情况 [13:30:20.720] > code 1.86.0 (commit 05047486b6df5eb8d44b2ecd70ea3bdf775fd937) [13:30:20.724] > Running ssh connection command... /var/fpwork/reiss/vscdata/server/cplane/.vscode-server/code-05047486b6df5eb8d44b2ecd70ea3bdf775fd937 comman…...

VMware虚拟机清理瘦身

用了一段时间VMware虚拟机之后&#xff0c;发现内存越来越小&#xff0c;也没装什么软件。。。 1.查询磁盘空间分布 虚拟机中磁盘空间查询 先看一下哪些地方占用的空间大&#xff0c;进行排查。 2.排查VMware复制文件产生的缓存路径 VMware复制文件有一个特点&#xff0c;以…...

Coil:Android上基于Kotlin协程的超级图片加载库

Coil&#xff1a;Android上基于Kotlin协程的超级图片加载库 1. coil简介 在当今移动应用程序的世界中&#xff0c;图片加载是一个不可或缺的功能。为了让应用程序能够高效地加载和显示图片&#xff0c;开发人员需要依赖于强大的图片加载库。而今天&#xff0c;我将向大家介绍…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

RocketMQ延迟消息机制

两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数&#xff0c;对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后&#xf…...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装&#xff08;Encapsulation&#xff09; 定义&#xff1a;将数据&#xff08;属性&#xff09;和操作数据的方法绑定在一起&#xff0c;通过访问控制符&#xff08;private、protected、public&#xff09;隐藏内部实现细节。示例&#xff1a; public …...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解&#xff08;完整版&#xff09; 一、现代浏览器渲染流程&#xff08;详细说明&#xff09; 1. 构建DOM树 浏览器接收到HTML文档后&#xff0c;会逐步解析并构建DOM&#xff08;Document Object Model&#xff09;树。具体过程如下&#xff1a; (…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...