HQYJ 2024-2-23 作业

  1. 自己实现单向循环链表的功能
  2. 整理思维导图
  3. 复习前面顺序表和链表的代码,重写链表逆置函数

 1.实现单向循环链表的功能

loop_link_list.h文件

#ifndef __LOOP_LINK_LIST__
#define __LOOP_LINK_LIST__
#include<stdio.h>
#include<stdlib.h>
typedef int datatype;
typedef struct loop_list
{union{datatype data;int len;};struct loop_list *next;}loop_list,*loop_p;loop_p creat_head();//创建头结点
loop_p creat_node(datatype data);//创建新节点
void insert_head(loop_p H,datatype data);//头插
void out_put(loop_p H);//输出链表(两次循环)
int loop_empty(loop_p H);//判空 
void del_tail(loop_p H);//尾删
void insert_pos(loop_p H,int pos,datatype data);//按位置插入
void del_pos(loop_p H,int pos);//按位置删除#endif

 loop_link_list.c文件 

#include "loop_link_list.h"
loop_p creat_head()
{loop_p L = (loop_p)malloc(sizeof(loop_list));if(L==NULL){printf("空间申请失败\n");return NULL;}L->len = 0;L->next = L;return L;
}loop_p creat_node(datatype data)
{loop_p new = (loop_p)malloc(sizeof(loop_list));if(new==NULL){printf("空间申请失败\n");return NULL;}new->data = data;return new;}
//判空
int loop_empty(loop_p H)
{if(H==NULL){printf("入参失败,请检查\n");return -1;}return H->len==0?1:0;}//头插
void insert_head(loop_p H,datatype data)
{if(H==NULL){printf("入参失败,请检查\n");return;}loop_p new = creat_node(data);new->next = H->next;H->next = new;H->len++;
}//按位置插入
void insert_pos(loop_p H,int pos,datatype data)
{if(H==NULL){printf("入参失败,请检查\n");return;}if(pos>H->len||pos<=0){printf("输入位置不合理\n");return;}loop_p p = H;for(int i=0;i<pos-1;i++){p = p->next;}loop_p new = creat_node(data);new->next = p->next;p->next = new;H->len++;}
//输出(看现象)
void out_put(loop_p H)
{if(H==NULL){printf("入参失败,请检查\n");return;}loop_p p = H->next;for(int i=1;i<=2;i++,p=p->next)//循环两次;{while(p!=H){printf("%d->",p->data);p = p->next;	}}	putchar(10);}
//尾删
void del_tail(loop_p H)
{if(H==NULL){printf("入参失败,请检查\n");return;}if(loop_empty(H)){printf("列表为空,无法删除\n");}loop_p p = H;while(p->next->next != H){p = p->next;}loop_p del = p->next;p->next = H;free(del);H->len--;
}//按位置删除
void del_pos(loop_p H,int pos)
{if(H==NULL){printf("入参失败,请检查\n");return;}if(pos>H->len||pos<=0){printf("输入位置不合理\n");return;}loop_p p = H;for(int i=0;i<pos-1;i++){p = p->next;}loop_p del = p->next;p->next = p->next->next;free(del);H->len--;}

main.c文件 

#include "loop_link_list.h"
int main(int argc, const char *argv[])
{loop_p L = creat_head();insert_head(L,5);insert_head(L,4);insert_head(L,3);insert_head(L,2);del_tail(L);del_tail(L);insert_pos(L,2,30);del_pos(L,3);out_put(L);	return 0;
}

 

 

2.重写链表逆置函数

//单链表的逆置
void over_turn(link_p H)
{link_p p = H->next->next;//保存第二个结点(从第二个开始头插)link_p q = p->next;//保存要插入结点的下一个结点的地址H->next->next = NULL;while(p!=NULL){p->next = H->next;H->next = p;p = q;if(q!=NULL){q=q->next;}}
}

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

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

相关文章

Matlab/simulink光伏发电的扰动观察法MPPT仿真(持续更新)

1.光伏发电的电导增量法MPPT仿真 2.光伏发电的恒定电压法MPPT仿真 3.光伏发电的扰动观察法MPPT仿真 4.光伏发电的占空比法MPPT仿真 5.基于神经网络的MPPT光伏发电仿真 6. 基于模糊控制的MPPT光伏发电仿真 7. 基于粒子群算法&#xff08;PSO&#xff09;的500w光伏系统MPPT控…

基于SpringBoot的气象数据监测分析大屏

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

【电子书】人工智能

资料 wx&#xff1a;1945423050&#xff0c;备注来源和目的 个人整理了一些互联网电子书 人工智能 Julia机器学习核心编程&#xff1a;人人可用的高性能科学计算.epubKeras深度学习实战.epubMATLAB图像与视频处理实用案例详解.epubMATLAB金融算法分析实战&#xff1a;基于机器…

回归预测 | Matlab实现PSO-BiLSTM-Attention粒子群算法优化双向长短期记忆神经网络融合注意力机制多变量回归预测

回归预测 | Matlab实现PSO-BiLSTM-Attention粒子群算法优化双向长短期记忆神经网络融合注意力机制多变量回归预测 目录 回归预测 | Matlab实现PSO-BiLSTM-Attention粒子群算法优化双向长短期记忆神经网络融合注意力机制多变量回归预测预测效果基本描述程序设计参考资料 预测效果…

Unity资源加密解决方案

据统计&#xff0c;全球范围内超过50%的游戏均使用Unity创作而成&#xff0c;作为游戏开发市场第一大游戏引擎占有者&#xff0c;Unity已经全面覆盖到各个游戏平台。 全球游戏引擎市场占有率 由于体量庞大&#xff0c;Unity游戏已成为受游戏黑灰产攻击的重灾区&#xff0c;因游…

【大厂AI课学习笔记NO.50】2.3深度学习开发任务实例(3)任务背景与目标

我们经常在做项目的时候&#xff0c;觉得分析背景和目标是浪费时间&#xff0c;觉得不过如此。 其实目标梳理特别重要&#xff0c;直接决定你数据的需求分析&#xff0c;模型的选择&#xff0c;决定你交付的质量。 人工智能项目也和其他项目一样&#xff0c;不要想当然&#…

VUE2.0 tips整理

VUE2.0 tips整理 /* 相关技术 1.框架&#xff1a;element 2.echarts&#xff1a;可视化图表&#xff0c;[官网](https://echarts.apache.org/zh/index.html)*/引入静态图片资源到表格中 //&#xff08;1&#xff09;页面中引入图片 import ims from "/assets/images/lay…

React18源码: React调度中的3种优先级类型和Lane的位运算

优先级类型 React内部对于优先级的管理&#xff0c;贯穿运作流程的4个阶段&#xff08;从输入到输出&#xff09;&#xff0c;根据其功能的不同&#xff0c;可以分为3种类型&#xff1a; 1 &#xff09;fiber优先级(LanePriority) 位于 react-reconciler包&#xff0c;也就是L…

【人脸朝向识别与分类预测】基于LVQ神经网络

课题名称&#xff1a;基于LVQ神经网络的人脸朝向识别分类 版本日期&#xff1a;2024-02-20 运行方式&#xff1a;直接运行GRNN0503.m文件 代码获取方式&#xff1a;私信博主或 企鹅号:491052175 模型描述&#xff1a; 采集到一组人脸朝向不同角度时的图像&#xff0c;图像…

持续集成,持续交付和持续部署的概念,以及GitLab CI / CD的介绍

引言&#xff1a;上一期我们部署好了gitlab极狐网页版&#xff0c;今天我们介绍一下GitLabCI / CD 目录 一、为什么要 CI / CD 方法 1、持续集成 2、持续交付 3、持续部署 二、GitLab CI / CD简介 三、GitLab CI / CD 的工作原理 4、基本CI / CD工作流程 5、首次设置 …

华清远见嵌入式学习——驱动开发——day9

目录 作业要求&#xff1a; 作业答案&#xff1a; 代码效果&#xff1a; ​编辑 Platform总线驱动代码&#xff1a; 应用程序代码&#xff1a; 设备树配置&#xff1a; 作业要求&#xff1a; 通过platform总线驱动框架编写LED灯的驱动&#xff0c;编写应用程序测试&…

Rust通用代码生成器莲花发布红莲尝鲜版二十一发布介绍视频,前端代码生成物大翻新

Rust通用代码生成器莲花发布红莲尝鲜版二十一发布介绍视频&#xff0c;前端代码生成物大翻新 Rust通用代码生成器发布了红莲尝鲜版二十一的最新介绍视频&#xff0c;前端代码生成物大翻新。视频请见&#xff1a; Rust通用代码生成器&#xff1a;莲花&#xff0c;红莲尝鲜版二…