热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PTA71jmuds顺序表区间元素删除(C语言)

本文提供了一个使用C语言实现的顺序表区间元素删除功能的完整代码示例。该程序首先初始化一个顺序表,然后根据用户输入的数据进行插入操作,最后根据指定的区间范围删除相应的元素,并输出最终的顺序表。

图1

实现代码如下:

#include
#include
#include
#define MAX_SIZE 1000
#define SUCCESS 1
#define FAILURE 0
typedef int Status;
typedef int ElementType;
typedef struct SeqList {
ElementType data[MAX_SIZE];
int size;
} *SeqListPtr;

SeqListPtr CreateSeqList() {
SeqListPtr list = (struct SeqList *)malloc(sizeof(struct SeqList));
list->size = 0;
return list;
}

Status InsertElement(SeqListPtr list, int index, ElementType element) {
if (list->size == MAX_SIZE || index <1 || index > list->size + 1) {
return FAILURE;
}
if (index <= list->size) {
for (int i = list->size - 1; i >= index - 1; i--) {
list->data[i + 1] = list->data[i];
}
}
list->data[index - 1] = element;
list->size++;
return SUCCESS;
}

Status DeleteElement(SeqListPtr list, int index) {
if (list->size == 0 || index <1 || index > list->size) {
return FAILURE;
}
if (index size) {
for (int i = index; i size; i++) {
list->data[i - 1] = list->data[i];
}
}
list->size--;
return SUCCESS;
}

void RemoveInRange(SeqListPtr list, int start, int end) {
for (int i = 0; i size; i++) {
if (list->data[i] >= start && list->data[i] <= end) {
DeleteElement(list, i + 1);
i--; // 调整索引,因为删除后列表长度减小
}
}
}

Status PrintList(SeqListPtr list) {
for (int i = 0; i size - 1; i++) {
printf("%d ", list->data[i]);
}
printf("%d\n", list->data[list->size - 1]);
return SUCCESS;
}

int main() {
SeqListPtr list = CreateSeqList();
int numElements, start, end, element;
scanf("%d", &numElements);
for (int i = 1; i <= numElements; i++) {
scanf("%d", &element);
InsertElement(list, i, element);
}
scanf("%d %d", &start, &end);
RemoveInRange(list, start, end);
PrintList(list);
return 0;
}


推荐阅读
  • 本文详细解析了2019年西安邀请赛中的一道树形动态规划题目——J题《And And And》。题目要求计算树中所有子路径异或值为0的集合数量,通过深入分析和算法优化,提供了高效的解决方案。 ... [详细]
  • HDU 2871 内存管理问题(线段树优化)
    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2871。本题涉及内存管理操作,包括重置、申请、释放和查询内存块。通过使用线段树进行高效管理和维护。 ... [详细]
  • 本文深入探讨了UNIX/Linux系统中的进程间通信(IPC)机制,包括消息传递、同步和共享内存等。详细介绍了管道(Pipe)、有名管道(FIFO)、Posix和System V消息队列、互斥锁与条件变量、读写锁、信号量以及共享内存的使用方法和应用场景。 ... [详细]
  • KMP算法是一种高效的字符串模式匹配算法,能够在不进行回溯的情况下完成匹配,其时间复杂度为O(m+n),其中m和n分别为文本串和模式串的长度。本文将详细介绍KMP算法的工作原理,并提供C语言实现。 ... [详细]
  • 本文详细介绍了Linux内核中misc设备驱动框架的实现原理及应用方法,包括misc设备的基本概念、驱动框架的初始化过程、数据结构分析以及设备的注册与注销流程。 ... [详细]
  • 本题要求计算给定两个正整数a和b时,2的-a次方与2的-b次方之和,并将结果以最简分数形式表示。输入包括多组测试数据,每组数据包含两个在2到20范围内的整数。 ... [详细]
  • 1、字符型常量字符型常量指单个字符,是用一对单引号及其所括起来的字符表示。例如:‘A’、‘a’、‘0’、’$‘等都是字符型常量。C语言的字符使用的就是 ... [详细]
  • Chapter11&12:DefocusBlur&FinalScene在Camera.h中修改如下:#pragmaonce#define_USE ... [详细]
  • 在寻找轻量级Ruby Web框架的过程中,您可能会遇到Sinatra和Ramaze。两者都以简洁、轻便著称,但它们之间存在一些关键区别。本文将探讨这些差异,并提供详细的分析,帮助您做出最佳选择。 ... [详细]
  • 本文介绍了一个经典的算法问题——活动选择问题,来源于牛客网的比赛题目。该问题要求从一系列活动集合中选出最多数量的相容活动,确保这些活动的时间段不重叠。 ... [详细]
  • 通过分析和解决找零钱问题,深入理解贪心算法的应用。本文提供详细的C语言代码实现及解析。 ... [详细]
  • 本文探讨了一段包含基类与派生类的C++代码,重点分析了虚函数的调用机制及其对程序行为的影响。代码示例包括了两个类的定义:Base和Derived,以及它们之间的继承关系。 ... [详细]
  • 传送门A-Registration#include#definelllonglongusingnamespacestd;chars[15],t[15]; ... [详细]
  • 本题探讨在特定条件下如何通过选择瓶子以最大化从火星人处获取的燃料量。 ... [详细]
  • QNX 微内核(procnto-instr)的监测版本内置了高级跟踪与分析工具,能够实现实时系统监控。该模块适用于单处理器及多处理器系统。 ... [详细]
author-avatar
非常异族图腾
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有