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://xiahunao.cn/news/2803908.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Java零基础 - 三元运算符

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一个人虽可以走的更快&#xff0c;但一群人可以走的更远。 我是一名后…

SpringBoot对于SpringMVC的支持

创建项目 版本说明这里使用的 SpringBoot 2.0.0.Release SpringBoot对于SpringMVC的支持 在之前的开发中很多场景下使用的是基于xml配置文件或者是Java配置类的方式来进行SpringMVC的配置。一般来讲&#xff0c;初始的步骤如下所示 1、初始化SpringMVC的DispatcherServlet2、…

C++的string容器->基本概念、构造函数、赋值操作、字符串拼接、查找和替换、字符串比较、字符存取、插入和删除、子串

#include<iostream> using namespace std; #include <string> //string的构造函数 /* -string(); //创建一个空的字符串 例如: string str; -string(const char* s); //使用字符串s初始化 -string(const string& str); //使…

前端JS学习(二):BOM、DOM对象与事件

Web API基本认知 Web API 的作用&#xff1a;使用JS去操作html和浏览器 Web API 的分类&#xff1a;DOM(网页文档对象模型)、BOM(浏览器对象模型) BOM BOM的全称是 Browser Object Model&#xff0c;浏览器对象模型。也就是 JavaScript 将浏览器的各个组成部分封装成了对象&…

修改单据转换规则后保存报错提示

文章目录 修改单据转换规则后保存报错提示 修改单据转换规则后保存报错提示

区块链与Solidity详细介绍及基本语法使用

一、区块链简介 区块链是一种分布式数据库技术&#xff0c;它以块的形式存储数据&#xff0c;并通过加密算法确保数据的安全性。每个块包含一系列交易&#xff0c;并通过哈希值与前一个块相连接&#xff0c;形成一个链式结构。这种结构使得数据难以被篡改&#xff0c;因为任何对…

2024.2.22 C++QT 作业

思维导图 练习题 1>完善对话框&#xff0c;点击登录对话框&#xff0c;如果账号和密码匹配&#xff0c;则弹出信息对话框&#xff0c;给出提示”登录成功“&#xff0c;提供一个Ok按钮&#xff0c;用户点击Ok后&#xff0c;关闭登录界面&#xff0c;跳转到其他界面。如果账…

线程池的基础使用和执行策略

什么是线程池 线程池&#xff0c;字面意思就是一个创建线程的池子&#xff0c;它的特点就是&#xff0c;在使用线程之前&#xff0c;就一次性把多个线程创建好&#xff0c;放到"池”当中。后面需要执行任务的时候&#xff0c;直接从"线程池"当中通过线程执行。…

通俗易懂分析:Vite和Webpack的区别

1、对项目构建的理解 先从浏览器出发&#xff0c; 浏览器是由浏览器内核和JS引擎组成&#xff1b;浏览器内核编译解析html代码和css代码&#xff0c;js引擎编译解析JavaScript代码&#xff1b;所以从本质上&#xff0c;浏览器只能识别运行JavaScript、CSS、HTML代码。 而我们在…

MATLAB环境下基于短时傅里叶变换和Rényi熵的脑电信号和语音信号分析

傅里叶变换是不能很好的反映信号在时域的某一个局部范围的频谱特点的&#xff0c;这一点很可惜。因为在许多实际工程中&#xff0c;人们对信号在局部区域的特征是比较关心的&#xff0c;这些特征包含着十分有用的信息。这类信号因为在时域(或者是空间域)上具有突变的非稳定性和…

Java基于SSM+JSP的超市进销库存管理系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

深入了解Git

1.1 Git 的工作流程简介 克隆 Git 资源作为工作目录 在克隆的资源上添加或修改文件 如果其他人修改了&#xff0c;你可以更新资源 在提交前查看修改 提交修改 在修改完成后&#xff0c;如果发现错误&#xff0c;可以撤回提交并再次修改并提交 1.2 Git 工作区、暂存区和版…

自存 angular material design 表单输入框lable右对齐样式

单个输入框的文字lable放输入框左边实现 material design 的组件库示例没有文字描述放左边的样式 ,所以mat-lable并没有放在mat-form-field中 <div class"input-container col-6"><mat-label>商品售价<span class"text-error">*</spa…

【springBoot】springAOP

AOP的概述 AOP是面向切面编程。切面就是指某一类特定的问题&#xff0c;所以AOP也可以理解为面向特定方法编程。AOP是一种思想&#xff0c;拦截器&#xff0c;统一数据返回和统一异常处理是AOP思想的一种实现。简单来说&#xff1a;AOP是一种思想&#xff0c;对某一类事务的集…

基于springboot+vue的中小型医院网站(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

TDesign Vue Next Starter中后台项目的生产环境部署与CSP内容安全策略、CORS跨源资源共享和服务后端开发

TDesign Vue Next Starter中后台项目的生产环境部署与CSP内容安全策略、CORS跨源资源共享和服务后端开发 目录 TDesign Vue Next Starter中后台项目的生产环境部署与CSP内容安全策略、CORS跨源资源共享和服务后端开发 一、TDesign Vue Next Starter中后台项目模板 1.1、项目…

Ubuntu20.04 查看系统版本号

目录 uname -auname -vlsb_release -acat /etc/issuecat /proc/version uname -a 查看系统发行版本号和操作系统版本 uname -v 查看版本号 lsb_release -a 查看发行版本信息 cat /etc/issue 查看系统版本 cat /proc/version 查看内核的版本号

vivado FSM Components

Vivado合成功能 •同步有限状态机&#xff08;FSM&#xff09;组件的特定推理能力。 •内置FSM编码策略&#xff0c;以适应您的优化目标。 •FSM提取默认启用。 •使用-fsm_extraction off可禁用fsm提取。 FSM描述 Vivado综合支持Moore和Mealy中的有限状态机&#xff08;…

ROX amine,Rhodamine X amine,可和羧酸等官能团反应

​您好&#xff0c;欢迎来到新研之家 文章关键词&#xff1a;Rhodamine X amine, ROX amine &#xff0c;Rhodamine X amine&#xff0c; ROX NH2&#xff0c;氨基ROX &#xff0c;ROX氨基&#xff0c;Rhodamine X氨基 一、基本信息 【产品简介】&#xff1a;ROX can also b…

C++的deque容器->基本概念、构造函数、赋值操作、大小操作、插入和删除、数据存取、排序

#include<iostream> using namespace std; #include <deque> //deque构造函数 void printDeque(const deque<int>& d) { for (deque<int>::const_iterator it d.begin(); it ! d.end(); it) { //*it 100; 容器中的数据不可以修…