热门标签 | 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;
}


推荐阅读
  • 本文详细介绍了二叉堆的概念及其在Java中的实现方法。二叉堆是一种特殊的完全二叉树,具有堆性质,常用于实现优先队列。 ... [详细]
  • spring(22)JdbcTemplate
    2019独角兽企业重金招聘Python工程师标准###1.导入jar包,必须jar包:c3p0、mysql-connector、beans、con ... [详细]
  • C语言中的结构体详解
    本文详细介绍了C语言中的结构体,包括结构体的声明、初始化、成员访问以及传参等方面的知识。 ... [详细]
  • 本文探讨了在使用JavaMail发送电子邮件时,抄送功能未能正常工作的问题,并提供了详细的代码示例和解决方法。 ... [详细]
  • UVa 1579 - 套娃问题
    本题主要涉及动态规划(DP)的应用,通过计算将前i个套娃合并成多个套娃组所需的最小操作次数来解决问题。具体来说,f(i) 表示前i个套娃合并成多个套娃组所需的操作次数,其计算公式为 f(i) = min(f(j) + dp(j+1, i))。 ... [详细]
  • 本文探讨了如何通过状态压缩动态规划(状压DP)和矩阵快速幂技术来解决公交线路问题。特别地,我们利用连续K个站点的状态来进行状态压缩,并通过矩阵快速幂加速计算过程。 ... [详细]
  • mysql数据库json类型数据,sql server json数据类型
    mysql数据库json类型数据,sql server json数据类型 ... [详细]
  • Spring Boot使用AJAX从数据库读取数据异步刷新前端表格
      近期项目需要是实现一个通过筛选选取所需数据刷新表格的功能,因为表格只占页面的一小部分,不希望整个也页面都随之刷新,所以首先想到了使用AJAX来实现。  以下介绍解决方法(请忽视 ... [详细]
  • 在Java中,每个对象都继承自Object类,并拥有equals、toString等方法。本练习要求定义一个PersonOverride类,并覆盖其toString和equals方法。 ... [详细]
  • 本文详细介绍了HashSet类,它是Set接口的一个实现,底层使用哈希表(实际上是HashMap实例)。HashSet不保证元素的迭代顺序,并且是非线程安全的。 ... [详细]
  • Redis:缓存与内存数据库详解
    本文介绍了数据库的基本分类,重点探讨了关系型与非关系型数据库的区别,并详细解析了Redis作为非关系型数据库的特点、工作模式、优点及持久化机制。 ... [详细]
  • 本文详细介绍了在单片机编程中常用的几个C库函数,包括printf、memset、memcpy、strcpy和atoi,并提供了具体的使用示例和注意事项。 ... [详细]
  • 本文将详细介绍带头双向循环链表的基本概念和实现方法,包括结构体定义、链表创建、初始化、查找、插入、删除及打印等操作。 ... [详细]
  • 开发笔记:1035 Password (20) ... [详细]
  • Redis 是一个高性能的开源键值存储系统,支持多种数据结构。本文将详细介绍 Redis 中的六种底层数据结构及其在对象系统中的应用,包括字符串对象、列表对象、哈希对象、集合对象和有序集合对象。通过12张图解,帮助读者全面理解 Redis 的数据结构和对象系统。 ... [详细]
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社区 版权所有