codeblock F2是出控制台

在这里插入图片描述
1.1

/*
by 1705 WYY
*/
#include <stdio.h>
#include <stdlib.h>
#define TRUE 1
#define FALSE 0
#define YES 1
#define NO 0
#define OK 1
#define ERROR 0
#define SUCCESS 1
#define UNSUCCESS 0
#define OVERFLOW -2
#define UNDERFLOW -3
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
typedef int Status;
typedef char ElemType;
typedef struct {ElemType *elem;int length;int listsize;
}SqList;Status InitList(SqList *L){(*L).elem =(ElemType *)malloc(LIST_INIT_SIZE *sizeof(ElemType));if(!(*L).elem) exit(OVERFLOW);//分配失败(*L).length=0;(*L).listsize = LIST_INIT_SIZE;return OK;
}Status ListInsert(SqList *L,int i,ElemType e)
{   ElemType *newbase;ElemType *p,*q;if(i<1||i>(*L).length+1)return ERROR;if((*L).length>=(*L).listsize){newbase = (ElemType *) realloc ((*L).elem,((*L).listsize+LISTINCREMENT)*sizeof(ElemType));if(!newbase) exit (OVERFLOW);(*L).elem =newbase;(*L).listsize +=LISTINCREMENT;}q=&((*L).elem[i-1]);for(p=&((*L).elem[(*L).length-1]);p>=q;--p)*(p+1) = *p;*q=e;++(*L).length;return OK;}Status ListDelete(SqList *L,int i,ElemType *e)
{int j;ElemType *p,*q;if(i<1||i>(*L).length)return ERROR;p=&(*L).elem[i-1];*e=*p;q=(*L).elem+(*L).length-1;//指向最后的一个节点for(++p;p<=q;++p)*(p-1)=*p;(*L).length--;return OK;
}
Status GetElem(SqList L,int i ,ElemType *e )
{if(i<1||i>L.length)return ERROR;else *e=L.elem[i-1];return OK;
}int main(){
SqList L;
int i;
ElemType e,z;
InitList (&L);
for(int i=1; i<=26;i++)ListInsert(&L,i,(char)i+64);ListDelete(&L,4,&z);
GetElem(L,4,&z);
printf("%c\n",z);ListInsert(&L,4,'D');
GetElem(L,4,&z);
printf("%c\n",z);
}

1.2
调试了半天总是有问题,最终发现是自己本来应该用线性链表,结果用成了线性表

/**Joseph问题Author:BaoMinyangDate:2018/09/20 
*/
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
using namespace std;#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
#define OK 1
#define ERROR 0
#define OVERFLOW -2typedef int ElemType;
typedef int DeleteType;
typedef int Status;//定义链表结点 
typedef struct LNode{ElemType num;ElemType data;LNode *next;
}*LinkList;//定义被删除的结点编号变量 
DeleteType del_num;//链表初始化 
Status InitRList(LinkList &L){L = (LinkList) malloc (sizeof(LNode));if(!L) exit(OVERFLOW);L->next = NULL;return OK;
}//创建链表 
Status CreateRList(LinkList &L,int a[],int n){LinkList r = L;for (int i = 0; i < n; ++i){LinkList q = (LinkList) malloc (sizeof(LNode));q->num = i+1;q->data = a[i];r->next = q;r = q;printf("num:%d,p:%d\n",q->num,q->data);}r->next = L->next; return OK;
}//删除链表结点 
LinkList DeleteRList(LinkList &m,int key){LinkList p,q;p = m;for (int j = 0; j < key-1; j++) p = p->next;q = p->next;p->next = q->next;printf("num:%d出列\n",q->num);del_num = q->data;free(q);return p;
}//游戏开始 
Status Joseph(LinkList &L,int n,int key){LinkList q = L;bool isDone = 1;while (n-1){if (isDone){q = DeleteRList(q,key);isDone = 0;}else {q = DeleteRList(q,del_num);}n--;}return q->num;
}int main(){	int a[35],n=0,init_m;LinkList L;printf("请输入m的初始值:");scanf("%d",&init_m);printf("请输入参加游戏的人数n:");scanf("%d",&n);printf("请输入每个人的密码:");for (int i = 0; i < n; ++i){scanf("%d",&a[i]);}InitRList(L);CreateRList(L,a,n);printf("游戏开始:\n"); printf("最终剩下的是num:%d",Joseph(L,n,init_m));return 0;
}

C函数库中的malloc和free分别用于执行动态内存分配和释放。
这两个函数的原型如下所示,他们都在头文件stdlib.h中声明。
void *malloc ( size_t size );
void free ( void *pointer );
malloc的作用是在内存的动态存储区中分配一个长度为size的连续空间。其参数是一个无符号整形数,返回值是一个指向所分配的连续存储域的起始地址的指针。还有一点必须注意的是,当函数未能成功分配存储空间(如内存不足)就会返回一个NULL指针。所以在调用该函数时应该检测返回值是否为NULL,确保非空之后再使用非常重要。malloc所分配的内存是一块连续的空间。同时,malloc实际分配的内存空间可能会比你请求的多一点,但是这个行为只是由编译器定义的。malloc不知道用户所请求的内存需要存储的数据类型,所以malloc返回一个void *的指针,它可以转换为其它任何类型的指针。
void *realloc (void ptr, size_t new_size );
realloc函数用于修改一个原先已经分配的内存块的大小,可以使一块内存的扩大或缩小。当起始空间的地址为空,即
ptr = NULL,则同malloc。
如果原先的内存尾部空间不足,或原先的内存块无法改变大小,realloc将重新分配另一块nuw_size大小的内存,并把原先那块内存的内容复制到新的内存块上。因此,使用realloc后就应该改用realloc返回的新指针。

2.1

/*
By WYY
*/
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
using namespace std;#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define OK 1
#define TRUE 1
#define FALSE 0
#define ERROR 0
#define OVERFLOW -1
#define MAXSIZE 100typedef int Status;
typedef int SElemType;typedef struct {SElemType *base;SElemType *top;int stacksize;}SqStack;Status InitStack(SqStack &s){
s.base = (SElemType *)malloc(STACK_INIT_SIZE *sizeof(SElemType));
if(!s.base)exit(OVERFLOW);
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
return OK;
}Status Push(SqStack &s,SElemType e)//插入新元素e
{if(s.top-s.base>=s.stacksize){//栈满 需要追加存储空间s.base=(SElemType *)realloc(s.base,(s.stacksize +STACKINCREMENT)* sizeof(SElemType));if(!s.base)exit(OVERFLOW);s.top =s.base +s.stacksize;s.stacksize +=STACKINCREMENT;}*s.top++ =e ;return OK;
}Status Pop(SqStack &s ,SElemType &e){
//用e返回删除的这个值
if(s.top == s.base)return ERROR;
e = * --s.top;
return OK;
}Status StackEmpty(SqStack &s){
if(s.top==s.base)return TRUE;
else return FALSE;
}void conversion();int main(){conversion();}void conversion (){int n,m;//数n,进制mcin>>n>>m;int e;SqStack s;InitStack(s);while(n){Push(s,n%m);n=n/m;}while(!StackEmpty(s)){Pop(s,e);printf("%d",e);}
}

函数fun 则输出fun *fun &fun值相同


表达式求值

operandtype操作数类型 operatortype 运算符类型


3.1 判断回文

while ((ch = getchar()) != '\n'){Push(S,ch);EnQueue(q,ch );}while (!StackEmpty(S)){Pop(S,e1);DeQueue(q,e2);if (e1 != e2) {printf("No!!");return OK;}}

3.2 猴子吃桃
★实验任务
动物园里的n只猴子编号为 1,2,…,n,依次排成一队等待饲养员按规则分桃。动物
园的分桃规则是每只猴子可分得m个桃子,但必须排队领取。饲养员循环地每次取出1 个,
2 个,…,k个桃放入筐中,由排在队首的猴子领取。取到筐中的桃子数为k 后,又重新从
1开始。当筐中桃子数加上队首猴子已取得的桃子数不超过m 时,队首的猴子可以全部取出
筐中桃子。取得桃子总数不足m个的猴子,继续到队尾排队等候。当筐中桃子数加上队首猴
子已取得的桃子数超过m时,队首的猴子只能取满m个,然后离开队列,筐中剩余的桃子由
下一只猴子取用。上述分桃过程一直进行到每只猴子都分到m 个桃子。
对于给定的n,k和 m,模拟上述猴子分桃过程。
★数据输入
第 1 行中有 3 个正整数 n,k 和 m,分别表示有 n 只猴子,每次最多取k个桃到筐中,每只猴子最终都分到m个桃子。
★数据输出
将分桃过程中每只猴子离开队列的次序依次输出
输入示例
输出示例
5 3 40
1 3 5 2 4

参考了一下包包的代码,他用的线性链表。。。

#include<stdio.h>
#include<stdlib.h>
#include<iostream>
using namespace std;#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
#define OK 1
#define ERROR 0
#define OVERFLOW -2typedef int ElemType;
typedef int DeleteType;
typedef int Status;//定义链表结点
typedef struct LNode{ElemType num;ElemType data;LNode *next;
}*LinkList;//链表初始化
Status InitRList(LinkList &L){L = (LinkList) malloc (sizeof(LNode));if(!L) exit(OVERFLOW);L->next = NULL;return OK;
}//创建链表
Status CreateRList(LinkList &L,int n){LinkList r = L;for (int i = 0; i < n; ++i){LinkList q = (LinkList) malloc (sizeof(LNode));q->num = i+1;//排编号q->data = 0;//桃子数为0r->next = q;//放进链表r = q;//尾指针更新}r->next = L->next;return OK;
}int ListLength(LinkList L)
{if (L->next == NULL) return 0;int i = 0;LinkList p = L->next;if (p->next == L->next) return 1;else{p = p->next;while(p != L->next){i++;p=p->next;}}return i+1;
}//删除链表结点
LinkList DeleteRList(LinkList &L,int m){LinkList p,q;p = L;while (p->next->data != m)p = p->next;//p指向桃子数为m的前一个q = p->next;//q指向桃子数为m的那个p->next = q->next;//将桃子数为m的节点删除p = q->next;//p指向更新的节点printf("num:%d出列\n",q->num);free(q);return p;
}Status print(LinkList p){LinkList q;while (q->next != p){q = q->next;}while (p->next != q){printf("%d",p->data);p = p->next;}printf("\n");return OK;
}//开始分桃
Status Peaches(int n,int k,int m){//n猴子,最多一次放k,一猴子拿够mLinkList L,p;InitRList(L);CreateRList(L,n);p = L->next;int temp = 0,cnt = 0,t = 0;//cnt猴子取得的篮里的桃//t篮里桃while (ListLength(p) > 1){if (t) cnt = t;else {//重新分发桃cnt = temp % k + 1;temp++;}t = 0;//拿走桃子if (p->data + cnt < m){p->data += cnt;p = p->next;}else {t = p->data + cnt - m;p->data = m;LinkList q = p;p = DeleteRList(q,m);}}return p->num;
}int main(){int n,k,m;cin>>n>>k>>m;printf("num:%d出列\n",Peaches(n,k,m));return 0;
}

4.1 串的置换算法

Status StrReplace(HString &S, HString T, HString V)//将v替换主串s中出现的所有与T相等的不重叠子串
{HString head, tail, temp, S0;int i, n;for (n = 0, i = 1; i <= (S.length - T.length + 1); i++){SubString(temp, S, i, T.length);//用temp返回串s的第i个字符起长度为len的子串if (!StrCompare(temp, T))//返回0也就是相等时{SubString(head, S, 1, i - 1);int m = S.length - i - T.length + 1;SubString(tail, S, i + T.length, m);Concat(S0, head, V);//s0返回head+vConcat(S, S0, tail);i += V.length - 1;n++;}}printf("%s\n", S.ch);return n;
}

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

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

相关文章

PyTorch 2.7深度技术解析:新一代深度学习框架的革命性演进

引言:站在AI基础设施变革的历史节点 在2025年这个充满变革的年份,PyTorch团队于4月23日正式发布了2.7.0版本,随后在6月4日推出了2.7.1补丁版本,标志着这个深度学习领域最具影响力的框架再次迎来了重大突破。这不仅仅是一次常规的版本更新,而是一次面向未来计算架构和AI应…

LTspice仿真10——电容

电路1中电容下标m5&#xff0c;表示5个该电阻并联电路2中ic1.5v&#xff0c;表示电容初始自带电量&#xff0c;电压为1.5v

C#事件驱动编程:标准事件模式完全指南

事件驱动是GUI编程的核心逻辑。当程序被按钮点击、按键或定时器中断时&#xff0c;如何规范处理事件&#xff1f;.NET框架通过EventHandler委托给出了标准答案。 &#x1f50d; 一、EventHandler委托&#xff1a;事件处理的基石 public delegate void EventHandler(object se…

全面的 Spring Boot 整合 RabbitMQ 的 `application.yml` 配置示例

spring:rabbitmq:# 基础连接配置 host: localhost # RabbitMQ 服务器地址port: 5672 # 默认端口username: guest # 默认用户名password: guest # 默认密码virtual-host: / # 虚拟主机&#xff08;默认/&…

Win32 API实现串口辅助类

近期需要使用C++进行串口通讯,将Win32 API串口接口进行了下封装,可实现同步通讯,异步回调通讯 1、SerialportMy.h #pragma once #include <Windows.h> #include <thread> #include <atomic> #include <functional> #include <queue> #inclu…

Python-执行系统命令-subprocess

1 需求 2 接口 3 示例 4 参考资料 Python subprocess 模块 | 菜鸟教程

Web攻防-XMLXXE上传解析文件预览接口服务白盒审计应用功能SRC报告

知识点&#xff1a; 1、WEB攻防-XML&XXE-黑盒功能点挖掘 2、WEB攻防-XML&XXE-白盒函数点挖掘 3、WEB攻防-XML&XXE-SRC报告 一、演示案例-WEB攻防-XML&XXE-黑盒功能点挖掘 1、不安全的图像读取-SVG <?xml version"1.0" standalone"yes&qu…

浏览器工作原理37 [#] 浏览上下文组:如何计算Chrome中渲染进程的个数?

一、前言 在默认情况下&#xff0c;如果打开一个标签页&#xff0c;那么浏览器会默认为其创建一个渲染进程。 如果从一个标签页中打开了另一个新标签页&#xff0c;当新标签页和当前标签页属于同一站点&#xff08;相同协议、相同根域名&#xff09;的话&#xff0c;那么新标…

位置编码和RoPE

前言 关于位置编码和RoPE 应用广泛&#xff0c;是很多大模型使用的一种位置编码方式&#xff0c;包括且不限于LLaMA、baichuan、ChatGLM等等 第一部分 transformer原始论文中的标准位置编码 RNN的结构包含了序列的时序信息&#xff0c;而Transformer却完全把时序信息给丢掉了…

手动使用 Docker 启动 MinIO 分布式集群(推荐生产环境)

在生产环境中&#xff0c;MinIO 集群通常部署在多个物理机或虚拟机上&#xff0c;每个节点运行一个 MinIO 容器&#xff0c;并通过 Docker 暴露 API 和 Console 端口。 1. 准备工作 假设有 4 台服务器&#xff08;也可以是同一台服务器的不同端口模拟&#xff0c;但不推荐生产…

如何在IntelliJ IDEA中设置数据库连接全局共享

在现代软件开发中&#xff0c;数据库连接管理是开发过程中不可或缺的一部分。为了提高开发效率&#xff0c;减少配置错误&#xff0c;并方便管理&#xff0c;IntelliJ IDEA 提供了一个非常有用的功能&#xff1a;数据库连接全局共享。通过这个功能&#xff0c;你可以在多个项目…

【Python】文件应用: 查找读取的文件内容

查找读取的文件内容 from pathlib import Pathpath Path(pi_million_digits.txt) contents path.read_text()lines contents.splitlines() pi_string for line in lines:pi_string line.lstrip()birthday input("Enter your birthday, in the form mmddyy: "…

交互式剖腹产手术模拟系统开发方案

以下是为您设计的《交互式剖腹产手术模拟系统》开发方案框架,包含技术实现路径与详细内容结构建议。由于篇幅限制,这里呈现核心框架与关键模块说明: 交互式剖腹产手术模拟系统开发方案 一、项目背景与意义 1.1 传统医学教学痛点分析 尸体标本成本高昂(约$2000/例)活体训…

AWS WebRTC: 判断viewer端拉流是否稳定的算法

在使用sdk-c viewer端进行拉流的过程中&#xff0c;viewer端拉取的是视频帧和音频帧&#xff0c;不会在播放器中播放&#xff0c;所以要根据收到的流来判断拉流过程是否稳定流畅。 我这边采用的算法是&#xff1a;依据相邻帧之间的时间间隔是否落在期望值的 20% 范围内。 音频…

【Python】文件读取:逐行读取应用实例——从一个JSONL文件中逐行读取文件

从一个JSONL文件中逐行读取文件&#xff0c;并将这些问题保存到一个新的JSONL文件中 import json import argparse import os # 导入os模块用于检查文件是否存在def read_questions_from_jsonl(file_path, limit):"""从JSONL文件中读取指定数量的question部分…

百宝箱生成智能体

点击新建应用 工作流如下&#xff1a; 点击发布 点击Web服务&#xff0c;上架

嵌入式 数据结构学习(五) 栈与队列的实现与应用

一、栈(Stack)详解 1. 栈的基本概念 栈的定义与特性 后进先出(LIFO)&#xff1a;最后入栈的元素最先出栈 操作限制&#xff1a;只能在栈顶进行插入(push)和删除(pop)操作 存储位置&#xff1a;我们实现的链栈位于堆区(malloc分配)&#xff0c;系统栈区存储函数调用信息 栈…

汇编与接口技术:8259中断实验

一、实验目的 该实验使学生掌握8259向量中断方式的硬件连接和软件编程的方法&#xff0c;同时使同学掌握中断和其它接口芯片配合来完成某一特定任务的方法。 二、实验内容 1、手动产生单脉冲作为中断请求信号连接到MIRQ3上和SIRT10上。每按一次开关产生一次中断&#xff0c;…

Ajax的初步学习

一、什么是 Ajax&#xff1f; Ajax (Asynchronous JavaScript and XML) 是一种无需重新加载整个网页的情况下&#xff0c;能够更新部分网页的技术。通过在后台与服务器进行少量数据交换&#xff0c;Ajax 可以使网页实现异步更新。 主要特性&#xff1a; 异步性 (Asynchronous…

OOM电商系统订单缓存泄漏,这是泄漏还是溢出

电商系统订单缓存泄漏的本质分析一、明确概念区别内存泄漏&#xff08;Memory Leak&#xff09;定义&#xff1a;对象已经不再被使用&#xff0c;但由于被错误引用而无法被垃圾回收特点&#xff1a;内存使用量随时间持续增长&#xff0c;最终可能导致OOM类比&#xff1a;像浴缸…