当前位置: 首页 > news >正文

建设企业网站的作用网站制作公司咨询

建设企业网站的作用,网站制作公司咨询,长春企业建站程序,wordpress英文版语言包执行结果:通过 题目: 855 考场就坐 在考场里,有 n 个座位排成一行,编号为 0 到 n - 1。 当学生进入考场后,他必须坐在离最近的人最远的座位上。如果有多个这样的座位,他会坐在编号最小的座位上。(另外&am…

执行结果:通过

题目: 855 考场就坐

在考场里,有 n 个座位排成一行,编号为 0 到 n - 1

当学生进入考场后,他必须坐在离最近的人最远的座位上。如果有多个这样的座位,他会坐在编号最小的座位上。(另外,如果考场里没有人,那么学生就坐在 0 号座位上。)

设计一个模拟所述考场的类。

实现 ExamRoom 类:

  • ExamRoom(int n) 用座位的数量 n 初始化考场对象。
  • int seat() 返回下一个学生将会入座的座位编号。
  • void leave(int p) 指定坐在座位 p 的学生将离开教室。保证座位 p 上会有一位学生。

示例 1:

输入:
["ExamRoom", "seat", "seat", "seat", "seat", "leave", "seat"]
[[10], [], [], [], [], [4], []]
输出:
[null, 0, 9, 4, 2, null, 5]
解释:
ExamRoom examRoom = new ExamRoom(10);
examRoom.seat(); // 返回 0,房间里没有人,学生坐在 0 号座位。
examRoom.seat(); // 返回 9,学生最后坐在 9 号座位。
examRoom.seat(); // 返回 4,学生最后坐在 4 号座位。
examRoom.seat(); // 返回 2,学生最后坐在 2 号座位。
examRoom.leave(4);
examRoom.seat(); // 返回 5,学生最后坐在 5 号座位。

提示:

  1. 1 <= n <= 109
  2. 保证有学生正坐在座位 p 上。
  3. seat 和 leave 最多被调用 104 次。

代码以及解题思路

代码:

typedef struct mylink {int id;struct mylink *next;
} mylink;typedef struct {int length;mylink* root;
} ExamRoom;
void print_obj(ExamRoom *obj)
{printf("%d ",obj->length);mylink* tmp=obj->root;while(tmp!=NULL){printf("%d ",tmp->id);tmp=tmp->next;}printf("\n");
}ExamRoom* examRoomCreate(int n) {ExamRoom* obj=malloc(sizeof(ExamRoom));obj->length=n;obj->root=NULL;return obj;}int examRoomSeat(ExamRoom* obj) {if(obj->root==NULL){obj->root=malloc(sizeof(mylink));obj->root->id=0;obj->root->next=NULL;return 0;}int max=-1;if(obj->root->id!=0) max=obj->root->id;mylink* max_link_before=NULL;mylink* tmp=obj->root;int diff=0;while(tmp->next!=NULL){   diff=(tmp->next->id - tmp->id)/2;if(diff>max){max=diff;max_link_before=tmp;}tmp=tmp->next;}//tmp 为末尾时diff=obj->length -1 - tmp->id;if(diff>max){max=diff;max_link_before=tmp;}if(max_link_before==NULL){mylink* add=malloc(sizeof(mylink));add->id=0;add->next=obj->root;obj->root=add;return 0;}if(max_link_before->next==NULL){max_link_before->next=malloc(sizeof(mylink));max_link_before->next->id=obj->length-1;max_link_before->next->next=NULL;return obj->length-1;}else{mylink* add=malloc(sizeof(mylink));add->id=max_link_before->id + max;add->next=max_link_before->next;max_link_before->next=add;return add->id;}}void examRoomLeave(ExamRoom* obj, int p) {mylink* tmp=obj->root;mylink* before=NULL;while(tmp!=NULL){if(tmp->id==p){if(before==NULL){obj->root=tmp->next;free(tmp);}else{before->next=tmp->next;free(tmp);}return;}before=tmp;tmp=tmp->next;}}void examRoomFree(ExamRoom* obj) {mylink* tmp=obj->root;mylink* next;while(tmp!=NULL){next=tmp->next;free(tmp);tmp=next;}free(obj);}

解题思路:

1. 数据结构定义

  • mylink 结构体:表示链表中的一个节点,包含座位号 id 和指向下一个节点的指针 next
  • ExamRoom 结构体:表示考场,包含两个成员:length 表示考场总座位数,root 指向链表的头节点。

2. print_obj 函数

  • 作用:打印考场信息,包括总座位数和已分配的座位号。
  • 解题思路:首先打印总座位数 length,然后遍历链表,打印每个节点的座位号 id

3. examRoomCreate 函数

  • 作用:创建一个新的考场对象。
  • 解题思路:使用 malloc 分配 ExamRoom 结构体所需的内存,初始化 length 为传入的参数 nroot 初始化为 NULL(表示链表为空),最后返回创建的考场对象。

4. examRoomSeat 函数

  • 作用:在考场中分配一个座位,并返回分配的座位号。
  • 解题思路
    1. 如果链表为空(即还没有分配任何座位),则在链表头部插入一个座位号为 0 的节点,并返回 0
    2. 遍历链表,计算相邻座位之间的最大间距 max 和该间距前的节点 max_link_before
    3. 考虑链表末尾与最后一个座位之间的间距。
    4. 根据 max_link_before 的值,在最大间距处插入一个新节点:
      • 如果 max_link_before 为 NULL,则在链表头部插入新节点。
      • 如果 max_link_before->next 为 NULL,则在链表尾部插入新节点。
      • 否则,在 max_link_before 和 max_link_before->next 之间插入新节点。
    5. 新节点的座位号 id 为 max_link_before->id + max,然后返回新节点的座位号。

5. examRoomLeave 函数

  • 作用:释放一个座位。
  • 解题思路:遍历链表,找到座位号为 p 的节点,并将其从链表中删除。如果要删除的节点是头节点,则更新头节点为下一个节点;否则,更新前一个节点的 next 指针,跳过要删除的节点。最后释放要删除的节点的内存。

6. examRoomFree 函数

  • 作用:释放考场对象及其占用的所有内存。
  • 解题思路:遍历链表,释放每个节点的内存,然后释放考场对象本身的内存。
http://www.dinnco.com/news/9786.html

相关文章:

  • 网站关键词扩展软文代写发布
  • b2c网站代表和网址别人恶意点击我们竞价网站
  • 网站建设规划书毕业论文6000字平台代运营是什么意思
  • 一个公网ip可以做几个网站合肥百度搜索优化
  • 朝阳改版网站网络销售推广公司
  • 建设网站财务分析百度的seo排名怎么刷
  • 辽阳网站建设学校产品营销推广方案
  • 网站设计师工作室免费com域名注册永久
  • 专注网站建设希爱力双效片副作用
  • 东莞房价一览表google搜索优化
  • 网站推广策划的策略qq推广引流网站
  • 平面设计素材网站排名北京网站优化多少钱
  • 长治网站制作报价网络营销的公司有哪些
  • 网站自己可以备案吗关键词歌曲免费听
  • 网站建设包含项目广州王牌seo
  • 莱州网站开发最常见企业网站有哪些
  • 政府网站建设基础seo试用软件
  • 武汉做网站九州科技seo引擎优化软件
  • 石龙镇做网站搜狗推广管家
  • 做网站标题代码seo网站课程
  • 批量 网站标题手机百度下载安装
  • 南京网站制作哪家好google seo 优化招聘
  • 菜鸟教程网站是怎么做的好消息疫情要结束了
  • 企业做网站网络整合营销4i原则
  • 发卡网站怎么做郑州今天刚刚发生的新闻
  • 帆客建设网站南宁网站建设公司排行
  • 英文wordpress建站线上推广具体应该怎么做
  • 有什么手机做网站的play商店
  • 为传销做网站个人信息怎么在百度推广
  • 怎么做网贷网站厦门百度竞价开户