数据结构——顺序表删除练习
代码功能:
1. 删除顺序表中第一个值为x的元素
2. 删除顺序表中所有值为x的元素
3. 删除顺序表中下标为p的连续k个元素
函数说明:
函数声明:PSeqList createNullList_seq(int m)
函数功能:建立一个顺序表
函数参数:m为申请结点的个数
函数返回值:返回生成的线性表函数声明:int locate_seq(PSeqList palist, int x)
函数功能:顺序表的查找
函数参数:palist为需处理的顺序表,x为查找的元素
函数返回值:元素存在则返回下标,不存在返回FALSE函数声明:int deleteV_seq(PSeqList palist, DataType x)
函数功能:删除顺序表中第一个值为x的元素
函数参数:palist为需处理的顺序表,x为欲删除元素
函数返回值:删除成功返回1,失败返回0函数声明:int deletesV_seq(PSeqList palist, DataType x)
函数功能:删除顺序表中所有值为x的元素
函数参数:palist为需处理的顺序表,x为欲删除元素
函数返回值:删除成功返回1,失败返回0函数声明:int deletesP_seq(PSeqList palist, int p, int k)
函数功能:删除顺序表中下标为p的连续k个元素
函数参数:palist为需处理的顺序表,p为欲删除元素下标,k为连续元素个数
函数返回值:删除成功返回1,否则直接结束程序。函数声明:void print(PSeqList palist)
函数功能:打印顺序表
函数参数:palist为需处理的数据表
函数返回值:无
#include<stdio.h>
#include<stdlib.h>
#include <windows.h>
#define FALSE 0
#define TRUE 1
typedef int DataType;// 顺序表数据类型
struct SeqList
{int MAXNUM; // 顺序表最大的容量int n; // 顺序表中已有的元素个数DataType *element; // 真正存放元素的其实地址
};
typedef struct SeqList *PSeqList;// 顺序表建立的算法,m为申请的结点个数
PSeqList createNullList_seq(int m)
{PSeqList palist = (PSeqList)malloc(sizeof(struct SeqList));if(palist != NULL){palist->element = (DataType *)malloc(sizeof(DataType)*m);if(palist->element){palist->MAXNUM = m;palist->n = 0;return(palist);}else{free(palist);}}printf("out of space!\n");return NULL;
}// 顺序表的查找。存在返回下标,不存在返回FALSE
int locate_seq(PSeqList palist, int x)
{int q;for (q=0; q<palist->n; q++){if (palist->element[q] == x){return q;}}return FALSE;
}// 删除顺序表中第一个值为x的元素
int deleteV_seq(PSeqList palist, DataType x)
{int p, q, flag=0;for(p=0; p<palist->n; p++){q = locate_seq(palist, x);if (q){flag = 1;deletesP_seq(palist, q, 1);break;}}if(flag == 0){printf("元素不存在\n");return TRUE;}return FALSE;
}// 删除顺序表中所有值为x的元素
int deletesV_seq(PSeqList palist, DataType x)
{int p, q, flag=0;for(p=0; p<palist->n; p++){q = locate_seq(palist, x);if (q){flag = 1;deletesP_seq(palist, q, 1);}}if(flag == 0){printf("元素不存在\n");return FALSE;}return TRUE;
}// 删除顺序表中下标为j的连续k个元素
int deletesP_seq(PSeqList palist, int p, int k)
{int q, i;if(p+k > palist->n){printf("out of range\n");exit(0);}if(p == 0 && k == palist->n){printf("顺序表被删空。\n");exit(0);}for(i=0; i<k; i++){if(p<0 || p > palist->n){printf("Not exist!\n");exit(0);}for(q=p; q<palist->n-1; q++){palist->element[q] = palist->element[q+1];}palist->n = palist->n-1;}return TRUE;
}// 打印顺序表
void print(PSeqList palist)
{int i;for(i=0; i<palist->n; i++)printf("%d\t", palist->element[i]);printf("\n");
}int main()
{PSeqList lx_alist;int max,len,i,x,q;int temp;int j,k;printf("\n请输入线性表的最大长度值(<100):");scanf("%d",&max);lx_alist = createNullList_seq(max);for(i=0; i<10; i++){lx_alist->element[i] = i+3;lx_alist->n++;}printf("对数组赋初值:\n");printf("现在的顺序表为:\n");print(lx_alist);printf("\n修改其中一个元素的值:\n");lx_alist->element[3] = 9;printf("现在的顺序表为:\n");print(lx_alist);temp = 8;printf("\n删除第一个值为%d元素:\n", temp);deleteV_seq(lx_alist, temp);printf("现在的顺序表为:\n");print(lx_alist);temp = 9;printf("\n删除全部值为%d元素:\n", temp);deletesV_seq(lx_alist, temp);printf("现在的顺序表为:\n");print(lx_alist);temp = 0;k = 7;printf("\n删除下标为%d的连续%d个元素值:\n", temp, k);deletesP_seq(lx_alist, temp, k);printf("现在的顺序表为:\n");print(lx_alist);system("pause");return 0;
}
数据结构——顺序表删除练习相关推荐
- 数据结构-顺序表(动态分配存储空间)
数据结构-顺序表(动态分配存储空间) (1)顺序表的结构定义: 结构型定义:(动态分配存储空间) /*** 动态分配存储空间*/ #define InitSize 100 //动态分配存储空间时,不限 ...
- C语言/C++常见习题问答集锦[八十三]之数据结构顺序表(operand types are error: no match for “operator==“)
C语言/C++常见习题问答集锦[八十三]之数据结构顺序表{operand types are error: no match for "operator=="} 程序之美 前言 主 ...
- 数据结构--顺序表的使用
数据结构--顺序表的使 #include<iostream> #include<cstdio> #include<cstring> using namespace ...
- Educoder头歌数据结构顺序表及其应用
头歌实践平台答案educoder 数据结构-顺序表及其应用 第1关:顺序表的实现之查找功能 /***************************************************** ...
- 数据结构—顺序表的实现【C语言】
目录 前言 一.顺序表是什么? 二.顺序表的实现 1.顺序表存储结构 2.接口 总结 前言 阅前提醒:本篇只是写出了顺序表里主要的算法代码,并没有以某种具体系统为轮廓来进行介绍.但是我想信,只要你掌握 ...
- C语言链表的转置算法,c语言编程集 数据结构 顺序表 点链表 数制转换 矩阵转置.doc...
c语言编程集 数据结构 顺序表 点链表 数制转换 矩阵转置 #include "stdio.h" #include "malloc.h" /*typedef s ...
- 数据结构——顺序表的合并
数据结构--顺序表的合并 具体要求:写一个函数,其函数的功能是将非递增顺序表LA和LB合并到非递增顺序表LC中 数据结构-顺序表的操作之合并顺序表 一.顺序表的结构 首先要定义的是顺序表的结构体,只有 ...
- python顺序表数组_数据结构 | 顺序表
什么是数据结构? 数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成. 简单来说,数据结构就是设计数据以何种方式组织并存储在计算机中. 比如:列表.集合与字典等都 ...
- 8.基本数据结构-顺序表和链表
一.内存 - 计算机的作用:对数据进行存储和运算.首先我们需要知道我们目前使用的计算机都是二进制的计算机,就以为着计算机只可以存储和运算二进制的数据.例如下载好的一部电影,该电影可以存储到计算机中,计 ...
最新文章
- Redis第四集:redis的基本知识说明
- STM32硬件错误(HardFault_Handler)位置判断
- EduCoder Linux之文件/目录搜索
- 2015年第六届蓝桥杯 - 省赛 - C/C++大学B组 - A. 奖券数目
- Selenium爬虫
- Java实训项目2:GUI学生信息管理系统 - 系统概述
- 第十篇 JVM核心机制之JVM运行和类加载全过程(五)
- mysql 联合索引匹配原则
- 微软给中国学生的特权:免费使用微软软件
- linux vi只写入1个字节,关于linux命令的说明(这是一个命令集)
- dw虚线横线的代码_虚线代码大全
- 无线打印机服务器如何使用,普通打印机如何变身无线打印?
- QQ群排名霸屏:快速上排名方法
- 前端项目从计划到上线的大致流程
- 用iText把图片转成PDF
- opencv读取16位色深图片
- 【CSDN 2022 年度征文】你不停的翻找答案,只不过是在找一个替你讲故事的人——Oracle DBA转型大数据开发DBA的自述
- python时间戳转日期格式(保留毫秒级别)
- “项目负责人”及“分项目负责人”职责
- 看不懂英文怎么办!学习编程,英语对初学者很重要吗?
热门文章
- 手撕python_手撕LeetCode #1171——Python
- DBeaver Enterprise 7.1 企业版注册方法
- 再谈如何学习Linux,一线Linux专家学习经验谈
- Debian10开启路由转发以及配置dhcp中继
- C语言考试知识点汇总(实践知识点)
- 使用c++/winrt API获取RGB相机视频流
- .买一件上衣45元,买一件裤子90元,如果成套买的话,一套120.假设我买了m个上衣和n个裤子,问需要花多少钱?
- uniApp wx-open-launch-app 微信浏览器内打开app及遇到的坑
- zara小程序怎么付款_能扫码付款并且可以打折的微信小程序怎么做?
- 并查集(小西的迷宫)