寒假作业-day2

2024-02-03 16:28
文章标签 day2 寒假作业

本文主要是介绍寒假作业-day2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1>请编程实现单向循环链表的头插,头删、尾插、尾删

代码:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>typedef int datatype;
typedef struct Node{datatype data;struct Node *next;
}*linklist;
int length(linklist head);
linklist create();
void output(linklist head);
linklist head_insert(linklist head, datatype e);
linklist head_delete(linklist head);
linklist rear_insert(linklist head, datatype e);
linklist rear_delete(linklist head);
linklist josefh(linklist head,int n,int m);
linklist bubble(linklist head);
int main(int argc,const char* argv[]){linklist head=NULL;int arr[]={5,4,3,2,1,0};int len=sizeof(arr)/sizeof(arr[0]);for(int i=0;i<len;i++)head=head_insert(head,arr[i]);output(head);head=head_delete(head);output(head);int arr1[]={6,7,8,9};int len1=sizeof(arr1)/sizeof(arr[0]);for(int i=0;i<len1;i++)head=rear_insert(head,arr1[i]);output(head);head=rear_delete(head);output(head);int m;printf("请输入m:");scanf("%d",&m);int len2=length(head);head=josefh(head,len2,m);output(head);head=bubble(head);output(head);return 0;
}
int length(linklist head){int len=0;linklist p=head;do{p=p->next;len++;}while(p!=head);return len;
}linklist create(){linklist p=(linklist)malloc(sizeof(struct Node));if(!p)return NULL;p->data=0;p->next=p;return p;
}
void output(linklist head){if(!head)return;linklist p=head;do{printf("%d\t",p->data);p=p->next;}while(p!=head);puts("");
}
linklist head_insert(linklist head,datatype e){linklist p=create();p->data=e;if(!head){head=p;//head->next=head;return head;}linklist q=head;while(q->next!=head){q=q->next;}p->next=head;head=p;q->next=head;return head;
}linklist head_delete(linklist head){if(!head)return head;if(head->next==head){free(head);head=NULL;return head;}linklist q=head;while(q->next!=head)q=q->next;linklist p=head;head=head->next;free(p);p=NULL;q->next=head;return head;
}
linklist rear_insert(linklist head,datatype e){linklist p=create();p->data=e;if(!head){head=p;//	p->next=head;return head;}linklist q=head;while(q->next!=head)q=q->next;q->next=p;p->next=head;return head;
}
linklist rear_delete(linklist head){if(!head)return head;if(head->next==head){free(head);head=NULL;return head;}linklist p=head;while(p->next->next!=head)p=p->next;linklist q=p->next;p->next=head;free(q);q=NULL;return head;
}

2>请编程实现单向循环链表约瑟夫环
约瑟夫环:用循环链表编程实现约瑟夫问题
n个人围成一圈,从某人开始报数1,2,.., m,数到m的人出圈,然后从出圈的下一个人(m+1)开始重复此过程
直到 全部人出圈,于是得到一个出圈人员的新序列
如当n=8,m=4时,若从第一个位置数起,则所得到的新的序列 为4,8,5,2,1,3,7,6

代码:

linklist josefh(linklist head,int n, int m){linklist s=NULL;linklist p=head;
//	printf("%d\n",n);while(n){for(int i=1;i<m-1;i++)p=p->next;s=rear_insert(s,p->next->data);linklist q=p->next;p->next=q->next;free(q);q=NULL;p=p->next;n--;}return s;

3>请编程实现单向循环链表的排序

代码:

linklist bubble(linklist head){if(!head)return head;linklist p=head;linklist q=p->next;do{do{//linklist q=p->next;if(p->data>q->data){int temp=q->data;q->data=p->data;p->data=temp;}q=q->next;}while(q!=head);p=p->next;}while(p!=head);return head;
}

1-3结果:

这篇关于寒假作业-day2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/674723

相关文章

Java预备知识 - day2

1.IDEA的简单使用与介绍 1.1 IDEA的项目工程介绍 Day2_0904:项目名称 E:\0_code\Day2_0904:表示当前项目所在路径 .idea:idea软件自动生成的文件夹,最好不要动 src:src==sourse→源,我们的源代码就放在这个文件夹之内 Day2_0904.iml:也是自动生成的文件,不要动 External Libraries:外部库 我这

【为项目做准备】Linux操作系统day2

这两天学校的事情总压着,day2拖了好几天..day2内容是进程数据结构 进程数据结构信号处理任务状态进程调度运行统计信息进程亲缘关系进程权限用户和组标识符(IDs)linux capabilities 内存管理文件与文件系统用户态与内核态用户态与内核态的转换函数调用栈内核栈和task_struct的关系 进程数据结构 进程or线程,在内核中,统一叫任务(Task),由一个统

Android智能家居实训day2

设置使用的布局文件 setContentView(R.layout.filename);,之后使用布局嵌套,一个布局内部可以嵌套另一个布局,内部的布局相当于外部布局的一个子控件,可以把它当作一个整体来操作,例如在今天的八宫格使用布局嵌套的时候,每一个格子是一个线性布局布局内使用垂直方向,而每两个布局作为一行,一共四行,这样就再拿一个布局框起来使用水平方向最后再把这四个布局用垂直方向。在布局之间分配

算法训练营——day2数组部分例题

1 移除元素-力扣27(简单) 1.1 题目: 移除元素1 1.2 思路及解法 只能覆盖,不能删除 暴力遍历解法 class Solution {public int removeElement(int[] nums, int val) {int size=nums.length;for(int i=0;i<size;i++){if(nums[i]==val){for(int j=

实习项目|苍穹外卖|day2

员工管理 新增员工 1.根据原型进行需求分析与设计(接口文档) 2.根据接口设计DTO(尽量不用原始的employee类) 3.编码controller-》service-》mapper controller:json的话参数前加@requestbody 4.功能测试 Swagger接口测试+前后端联调 5.代码完善 对于第一个问题:设置全局捕获这个SQL异常(这个

网络安全 day2 --- 宝塔搭建网站、phpstudy、IIS搭建网站的区别、docker、建站分配站、前后端分离

宝塔建站 以下步骤目前在VPS上操作 直接网上搜索宝塔官网进行下载window面板,然后安装宝塔面板 https://download.bt.cn/win/panel/BtSoft.zip 也可以直接用我这个下载链接 等待安装成功,安装成功后直接进入宝塔面板 登陆宝塔面板之后我们需要注册一个账号。然后进入宝塔面板安装我们所需要的程序。 直接安装推荐安装的,然后进入软件商店--》一键部

Linux云计算 |【第二阶段】SECURITY-DAY2

主要内容: Zabbix报警机制(创建触发器、设置邮箱、执行动作),Zabbix进阶操作(主动发现、主被动监控模式、拓扑图、聚合图形)、监控案例(监控Nginx服务状态、监控TCP连接状态) 一、Zabbix报警机制概念 - 自定义的监控项默认不会自动报警,首页也不显示报警错误提示,需要配置触发器与报警动作才可实现自动报警,如图所示: 1)触发器(Trigger) 创建触发器时,

go语言day2

使用cmd 中的 go install ; go build 命令出现 go cannot find main module 错误怎么解决? go学习-问题记录(开发环境)go: cannot find main module; see ‘go help modules‘_go: no flags specified (see 'go help mod edit')-CSDN博客

Qt creator day2练习

使用手动连接,将登录框中的取消按钮使用第二种方式,右击转到槽,在该函数中,调用关闭函数,将登录按钮使用Qt4版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为“admin”,密码是否为“123456”,如果账号密码匹配成功,则输出“登录成功”,并关闭该界面,如果匹配失败,则输出登录失败,并将密码框中的内容清空。 头文件 #ifndef WIDGET_H#define

嵌入式实训day2

1、 count=eval(input("请输入两位数"))jin=count//16liang=count%16print(jin,"斤",liang,"两") 2、 num=eval(input("请输入一个三位数:"))res=0res+=num%10res+=num%100//10res+=res//100print("res=",res) 3、