2024.2.3 作业

1、实现单向循环链表的头插头删尾插尾删

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef int datatype;
typedef struct node
{//数据域int data;//指针域struct node *next;
}*Linklist;
Linklist create()
{Linklist s=(Linklist)malloc(sizeof(struct node));if(s==NULL)return NULL;s->data=0;s->next=s;return s;
}
Linklist head_insert(Linklist head,datatype element)
{Linklist s=create();s->data=element;if(NULL==head){head=s;}else{Linklist p=head;while(p->next!=head)p=p->next;s->next=head;head=s;p->next=head;}return head;
}
void output(Linklist head)
{if(head==NULL){puts("empty!");return;}Linklist p=head;do{printf("%-5d",p->data);p=p->next;}while(p!=head);puts("");
}
//头删
Linklist head_delete(Linklist head)
{if(head==NULL)return NULL;else{Linklist p=head;while(p->next!=head)p=p->next;Linklist del=head;head=head->next;free(del);p->next=head;del=NULL;}return head;
}
Linklist rear_insert(Linklist head,datatype element)
{Linklist p=head;Linklist s=create();s->data=element;if(head==NULL){head=s;}else{while(p->next!=head){p=p->next;}p->next=s;s->next=head;}return head;}
Linklist rear_delete(Linklist head)
{Linklist p=head;if(head==NULL)return NULL;else{while(p->next==head){free(head);head=NULL;return head;}while(p->next->next!=head){p=p->next;}Linklist del=p->next;free(del);p->next=head;}return head;
}
int main(int argc, const char *argv[])
{Linklist head=NULL;datatype element;int n;printf("please enter the len of linklist:");scanf("%d",&n);for(int i=0;i<n;i++){	printf("please enter the %dth num:",i+1);scanf("%d",&element);//头插head=head_insert(head,element);//尾插//head=rear_insert(head,element);}output(head);//头删head=head_delete(head);printf("the new linklist is:");output(head);//尾删//head=rear_delete(head);//printf("the new linklist is:");//output(head);return 0;
}

2、编程实现单向循环链表的约瑟夫环

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef int datatype;
typedef struct node
{//数据域int data;//指针域struct node *next;
}*Linklist;
Linklist create()
{Linklist s=(Linklist)malloc(sizeof(struct node));if(s==NULL)return NULL;s->data=0;s->next=s;return s;
}
Linklist head_insert(Linklist head,datatype element)
{Linklist s=create();s->data=element;if(NULL==head){head=s;}else{Linklist p=head;while(p->next!=head)p=p->next;s->next=head;head=s;p->next=head;}return head;
}
void output(Linklist head)
{if(head==NULL){puts("empty!");return;}Linklist p=head;do{printf("%-5d",p->data);p=p->next;}while(p!=head);puts("");
}
//头删
Linklist head_delete(Linklist head)
{if(head==NULL)return NULL;else{Linklist p=head;while(p->next!=head)p=p->next;Linklist del=head;head=head->next;free(del);p->next=head;del=NULL;}return head;
}
Linklist rear_insert(Linklist head,datatype element)
{Linklist p=head;Linklist s=create();s->data=element;if(head==NULL){head=s;}else{while(p->next!=head){p=p->next;}p->next=s;s->next=head;}return head;}
Linklist rear_delete(Linklist head)
{Linklist p=head;if(head==NULL)return NULL;else{while(p->next==head){free(head);head=NULL;return head;}while(p->next->next!=head){p=p->next;}Linklist del=p->next;free(del);p->next=head;}return head;
}
Linklist josefh(Linklist head,int n,int m)
{if(head==NULL)return head;Linklist p=head;for(int i=0;i<n;i++){for(int j=0;j<m-2;j++)p=p->next;Linklist del=p->next;printf("%-5d",del->data);p->next=del->next;free(del);del=NULL;p=p->next;}puts("");return head;
}
int main(int argc, const char *argv[])
{Linklist head=NULL;datatype element;int n;printf("please enter the len of linklist:");scanf("%d",&n);for(int i=0;i<n;i++){	printf("please enter the %dth num:",i+1);scanf("%d",&element);//头插//head=head_insert(head,element);//尾插head=rear_insert(head,element);}//output(head);//头删//head=head_delete(head);//printf("the new linklist is:");//output(head);//尾删//head=rear_delete(head);//printf("the new linklist is:");//output(head);//约瑟夫环datatype m;printf("please enter the m:");scanf("%d",&m);head=josefh(head,n,m);return 0;
}

3、实现单向循环链表的排序

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef int datatype;
typedef struct node
{//数据域int data;//指针域struct node *next;
}*Linklist;
Linklist create()
{Linklist s=(Linklist)malloc(sizeof(struct node));if(s==NULL)return NULL;s->data=0;s->next=s;return s;
}
void output(Linklist head)
{if(head==NULL){puts("empty!");return;}Linklist p=head;do{printf("%-5d",p->data);p=p->next;}while(p!=head);puts("");
}Linklist rear_insert(Linklist head,datatype element)
{Linklist p=head;Linklist s=create();s->data=element;if(head==NULL){head=s;}else{while(p->next!=head){p=p->next;}p->next=s;s->next=head;}return head;}
datatype length(Linklist head)
{int len=0;Linklist p=head;do{p=p->next;len++;}while(p!=head);return len;}
void Bubble(Linklist head)
{if(head==NULL)return;int len=length(head);for(int i=1;i<len;i++){Linklist p=head;for(int j=0;j<len-i;j++){if(p->data>p->next->data){datatype t=p->data;p->data=p->next->data;p->next->data=t;}p=p->next;}}
}
int main(int argc, const char *argv[])
{Linklist head=NULL;datatype element;int n;printf("please enter n:");scanf("%d",&n);for(int i=0;i<n;i++){	printf("please enter the %dth num:",i+1);scanf("%d",&element);//尾插head=rear_insert(head,element);}//冒泡排序Bubble(head);output(head);return 0;
}

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

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

相关文章

【项目日记(九)】项目整体测试,优化以及缺陷分析

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:项目日记-高并发内存池⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你做项目   &#x1f51d;&#x1f51d; 开发环境: Visual Studio 2022 项目日…

米贸搜|Facebook在购物季使用的Meta广告投放流程

一、账户简化 当广告系列开始投放后&#xff0c;每个广告组都会经历一个初始的“机器学习阶段”。简化账户架构可以帮助AI系统更快获得广告主所需的成效。例如&#xff1a; 每周转化次数超过50次的广告组&#xff0c;其单次购物费用要低28%&#xff1b;成功结束机器学习阶段的…

代码随想录day20--二叉树的应用8

LeetCode669.修剪二叉搜索树 题目描述&#xff1a; 给你二叉搜索树的根节点 root &#xff0c;同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树&#xff0c;使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即&#xff0c;如果没…

红队笔记Day2 -->上线不出网机器

今天就来讲一下在企业攻防中如何上线不出网的机器&#xff01;&#xff01; 1.基本网络拓扑 基本的网络拓扑就是这样 以下是对应得的P信息&#xff0c;其中的52网段充当一个内网的网段&#xff0c;而111充当公网网段 先ping一下&#xff0c;确保外网ping不通内网&#xff0c;内…

0206作业

TCP&#xff08;传输控制协议&#xff09;和 UDP&#xff08;用户数据报协议&#xff09;是两种常用的网络传输协议。它们之间的主要区别在于&#xff1a; 可靠性&#xff1a;TCP 是一种可靠的传输协议&#xff0c;它提供了数据传输的确认、重传和排序功能。如果数据在传输过程…

电商小程序04实现登录逻辑

目录 1 创建自定义方法2 获取用户名和密码3 验证用户是否同意协议4 验证用户名和密码总结 上一篇我们实现了登录功能的前端界面&#xff0c;这一篇实现一下登录的具体逻辑。 1 创建自定义方法 一般如果页面点击按钮需要有事件响应的&#xff0c;我们用自定义方法来实现。打开我…

【C语言】assert断言:保护程序的利器

在软件开发过程中&#xff0c;我们经常会遇到一些假设条件或者预期行为。例如&#xff0c;我们可能假设一个函数的输入参数必须在某个范围内&#xff0c;或者某个变量的值应该满足特定的条件。当这些假设或预期行为被打破时&#xff0c;程序可能会出现异常行为&#xff0c;甚至…

《UE5_C++多人TPS完整教程》学习笔记6 ——《P7 在线会话控制(Online Sessions)》

本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P7 在线会话控制&#xff08;Online Sessions&#xff09;》 的学习笔记&#xff0c;该系列教学视频为 Udemy 课程 《Unreal Engine 5 C Multiplayer Shooter》 的中文字幕翻译版&#xff0c;UP主&#xff08;也是译者&…

《直到黎明》中的人物性格——萨曼莎·戈登

在Supermassive Games开发的交互式恐怖冒险游戏《直到黎明》中,萨曼莎戈登是一位关键角色,其性格塑造丰富而立体,包含了多重维度的人性刻画。以下将从几个核心性格特点出发,深入探讨萨曼莎戈登这一角色。 一、勇敢坚韧 萨曼莎面对游戏中极端恶劣的生存环境与持续不断的恐怖…

Java 基于 SpringBoot+Vue 的社区医院系统

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

一、DataX简介

DataX简介 一、什么是DataX二、DataX设计三、支持的数据源四、框架设计五、运行原理六、DataX和Sqoop对比 一、什么是DataX DataX是阿里巴巴开源的一个异构数据源离线同步工具&#xff0c;致力于实现包括关系型数据库&#xff08;MySQL、Oracle等&#xff09;、HDFS、Hive、OD…

小白速成法:剖析一个Android项目以快速上手

这是一个基于Tasmota的设备、用MQTT协议来通信控制的安卓应用程序。支持ON/OFF命令插座和基本的RGB LED控制。 源码点击此处 只需要关注SmartController-main\app\src的代码 项目解压之后如图 只需要关注“app”文件夹里的东西即可&#xff0c;“gradle”是配置文件&#xf…