2023.03.29
作业一、顺序表按元素删除
思路:参数【顺序表 删除的值key】
1.根据删除的元素得到下标
2.根据下标实现【按下标删除】
//头文件
//宏定义
#ifndef __HEAD_H__
#define __HEAD_H__#include<string.h>
#include<stdio.h>
#include<stdlib.h>#define MAXSIZE 7 //表示线性表长度typedef int datatype;//把int起别名为datatype
//定义顺序表:数据元素、顺序表长度
typedef struct
{//数据元素datatype data[MAXSIZE];//顺序表长度int len;
}seqlist;
seqlist *create();
int full_seqlist(seqlist *list);
int insert_rear(seqlist *list,datatype e);
void output(seqlist *list);
int empty_seqlist(seqlist *list);
int delete_rear(seqlist *list);
int search_sub(seqlist *list,int sub);
int update_sub(seqlist *list,int sub,datatype e;);
int insert_sub(seqlist *list,int sub,datatype e);
int delete_sub(seqlist *list,int sub);
int search_data(seqlist *list,int key);
int update_data(seqlist *list ,datatype key,datatype e);
int delete_data(seqlist *list,int key);
#endif
//主函数
#include "head.h"int main(int argc, const char *argv[])
{seqlist *list=create();//循环在尾部插入int n;datatype e;printf("请输入数据元素的个数:");scanf("%d",&n);for(int i=0;i<n;i++){printf("请输入您要插入的值:");scanf("%d",&e);insert_rear(list ,e);}output(list);//删除delete_rear(list);delete_rear(list);output(list);//查找按下表int sub;printf("请输入你要查找的下表:");scanf("%d",&sub);search_sub(list ,sub);//修改printf("请输入要修改的下表:");scanf("%d",&sub);printf("请输入要修改的值");scanf("%d",&e);update_sub(list,sub,e);output(list);//插入printf("请输入要插入的下表:");scanf("%d",&sub);printf("请插入要修改的值");scanf("%d",&e);insert_sub(list,sub,e);output(list);//删除printf("请输入要删除的下表:");scanf("%d",&sub);delete_sub(list ,sub);output(list);//查找元素datatype key;printf("请输入你要查找的元素:");scanf("%d",&key);int flag=search_data(list, key);if(flag==-1)printf("查找失败\n");elseprintf("查找在%d个元素",flag);//按元素修改printf("请输入被修改的值:");scanf("%d",&key);printf("请输入要修改的值");scanf("%d",&e);update_data(list,key,e);output(list);//删除元素printf("请输入要删除的元素:");scanf("%d",&key);delete_data(list ,key);output(list);return 0;
}
//自定义函数#include "head.h"
/** function: 在堆区申请顺序表* @param [ in] 申请一个顺序表的空间* @param [out] * @return 成功返回地址*/
seqlist *create()
{seqlist *list=(seqlist *)malloc(sizeof(seqlist));if(list==NULL)return NULL;list->len=0;//把顺序表清空return list;
}/** function: 判断顺序表是否为满* @param [ in] 顺序表 * @param [out] * @return 成功返回0,失败返回-1*/
int full_seqlist(seqlist *list)
{return list->len==MAXSIZE?-1:0;
}/** function: 在尾部插入 * @param [ in] 顺序表 插入的值e* @param [out] * @return 成功返回0,失败返回-1*/
int insert_rear(seqlist *list,datatype e)
{//判断顺序表是否为满if (full_seqlist(list))//if(full_seqlist(list)==-1){printf("顺序表已满!\n");return -1;}list ->data[list->len]=e;list ->len++;return 0;
}/** function: 循环输出* @param [ in] 顺序表* @param [out] * @return 无返回*/void output(seqlist *list)
{puts("");for(int i=0;i<list->len;i++){printf("%d\t",list->data[i]);}puts("");
}/** function: 判断顺序表是否为空* @param [ in] 顺序表* @param [out] * @return 成功返回0 失败返回-1*/
int empty_seqlist(seqlist *list)
{return list ->len==0?-1:0;
}/** function: 顺序表尾删* @param [ in] 顺序表* @param [out] * @return 成功返回0 失败返回-1*/
int delete_rear(seqlist *list)
{//判断顺序表是否为空if(empty_seqlist(list)){printf("顺序表为空\n");return -1;}//尾删list->len--;return 0;
}/** function: 按下表查找* @param [ in] 顺序表 查找的下表* @param [out] * @return 成功返回0 失败返回-1*/
int search_sub(seqlist *list,int sub)
{//判断顺序表是否为空//判断下表是否合法if(empty_seqlist(list)||sub<0||sub>=list->len){printf("顺序表查找失败\n");return -1;}//查找:输出printf("查找的元素是:%d\n",list->data[sub]);return 0;
}
/** function: 按下表修改* @param [ in] 顺序表 修改的下表 修改的值* @param [out] * @return 成功返回0, 失败返回-1*/
int update_sub(seqlist *list,int sub,datatype e)
{//判断顺序表是否为空//判断下标是否合法if(empty_seqlist(list)||sub<0||sub>=list->len){printf("修改失败\n");return -1;}//修改:重新赋值list->data[sub]=e;return 0;}/** function: 按下表插入* @param [ in] 顺序表 插入的下表 插入的值* @param [out] * @return 成功返回0 失败返回-1*/int insert_sub(seqlist *list,int sub,datatype e)
{//判断顺序表是否为满//判断下表是否合法if(full_seqlist(list)||sub<0||sub>list->len){printf("插入失败\n");return -1;}//插入for(int i=list->len-1;i>=sub;i--){list->data[i+1]=list->data[i];//后移}//在sub插入elist->data[sub]=e;list->len++;return 0;
}/** function: 按下表删除* @param [ in] 顺序表 删除的下表* @param [out] * @return 成功返回0 失败返回-1*/int delete_sub(seqlist *list,int sub)
{//判断顺序表是否为空//判断下表是否合法if(empty_seqlist(list)||sub<0||sub>=list->len){printf("删除失败\n");return -1;}//删除for(int i=sub+1;i<list->len;i++){list->data[i-1]=list->data[i];//前移}list->len--;
}/** function: 按元素查找* @param [ in] 顺序表 查找的元素* @param [out] * @return 成功返回下表 失败返回-1*/int search_data(seqlist *list,int key)
{for(int i=0;i<list->len;i++){if(list->data[i]==key){return i;}}return -1;
}/** function: 按元素修改* @param [ in] 顺序表 被修改的值 要修改的值* @param [out] * @return 成功返回0 失败返回-1*/
int update_data(seqlist *list ,datatype key,datatype e)
{//查找key的下表int sub =search_data(list,key);//sub是key的下表if (sub==-1){printf("修改失败\n");return -1;}//调用按下表修改update_sub(list ,sub,e);return 0;
}/** function: 按元素删除* @param [ in] 顺序表 要被删除的元素* @param [out] * @return 成功返回0 失败返回-1*/
int delete_data(seqlist *list,int key)
{//查找key的下表int sub =search_data(list,key);//sub是key的下表if (sub==-1){printf("删除失败\n");return -1;}//调用按下表删除delete_sub(list ,sub);return 0;
}
作业二、顺序表排序【类似数组排序】
比较:if(list->data[j] > list->data[j+1])
#include<string.h>
#include<stdio.h>
#include<stdlib.h>#define MAX 100 //线性长度
typedef struct
{int *data; //数据元素int len; //顺序表长度int listsize;//最大容量
}seqlist;//在堆区申请空间
seqlist *create()
{seqlist *list =(seqlist *)malloc(sizeof(seqlist));if(list==NULL)return NULL;list->len=0;//把顺序表清空return list;
}//初始化新的顺序表
int new_seqlist(seqlist *list)
{list->data =(int *)malloc(MAX*sizeof(int));if(!list->data)exit(0);list->len=0; //初始化长度为0list->listsize=MAX;//最大容量return 1; //构造成功返回1}//手动输入生成顺序表
void crea_seqlist(seqlist *list)
{int i,n=0,s;printf("请输入所输字符串长度:\n");scanf("%d",&s);for(i=0;i<s;i++){scanf("%d",&n);list->data[i]=n;}list->len=i;printf("输入成功!\n");//返回当前长度
}//冒泡排序对输入表进行排序
void sequence(seqlist *list)
{for(int i=0;i<list->len;i++){for(int j=0;j<list->len-i-1;j++){if(list->data[j]> list->data[j+1])//生序排列{int temp =list->data[j];list->data[j]=list->data[j+1];list->data[j+1]=temp;}}for (int z=0;z<list->len;z++)printf("%d",list->data[z]);printf("\n");}
}int main(int argc, const char *argv[])
{char ch;seqlist a,b,c;seqlist *list=create();if(new_seqlist(&a)){crea_seqlist(&a);sequence(&a);}return 0;
}
2023.03.29相关推荐
- 抖查查参数解析 【2023/03/29】
文章目录 文章目录 文章目录 前言 网址 目标参数 参数 请求头 确认加密位置 1.堆栈反查 逻辑代码 总体逻辑 代码 完结 前言 可以关注我哟,一起学习,主页有更多练习例子 如果哪个练习我没有写清楚 ...
- English Learning - L2-10 英音地道语音语调 鼻辅音 [m] [n] [ŋ] 舌边音 [l] [r] 2023.03.23 周四
English Learning - L2-10 英音地道语音语调 鼻辅音 [m] [n] [ŋ] 舌边音 [l] [r] 2023.03.23 周四 课前准备活动和回顾 鼻辅音 鼻辅音 [m] 鼻辅 ...
- mulesoft MCIA 破釜沉舟备考 2023.04.29.27 (易错题)
mulesoft MCIA 破釜沉舟备考 2023.04.29.27 (易错题) 1. An insurance company has an existing API which is curren ...
- E.03.29 Afraid of Needles? Don’t Let It Keep You From a Covid-19 Vaccine.
2021.03.29 文章目录 [课程导读] [英文原文] [外刊原文] [课程导读] 疫苗被寄予了战胜新冠疫情的厚望,目前,已开始在世界各地广泛接种.然而,对于"针头恐惧症"或者 ...
- English Learning - L2-5 英音地道语音语调 弹力双元音 [ɪə] [ʊə] [eə] 2023.03.6 周一
English Learning - L2-5 英音地道语音语调 弹力双元音 [ɪə] [ʊə] [eə] 2023.03.6 周一 朗读节奏 元音的长度 元音发音在清辅音和浊辅音前的区别 元音发音跟 ...
- English Learning - L2-7 英音地道语音语调 爆破音 [p] [b] [t] [d] [k] [g] 2023.03.13 周一
English Learning - L2-7 英音地道语音语调 爆破音 [p] [b] [t] [d] [k] [g] 2023.03.13 周一 课前热身 辅音 辅音的定义 清辅音和浊辅音的区别 ...
- 关于更新win11 22H2后透明任务栏失效的解决方法.2023.03.15
关于更新win11 22H2后透明任务栏失效的解决方法2023.03.15 [ViVe Tool下载地址]{Releases · thebookisclosed/ViVe (github.com)} ...
- Go C画图 CSP-J 信息学奥赛 2023.03。13、14、15测试题
2023.03.09.10.11.12 测试题(选做3-5题) 请将每1道题做完后,将AC截图发到QQ群里 请测试完成后,统计一下AC题目的个数 379.场记板 难度:1 登录 385.身高 难度:1 ...
- English Learning - L2 英音地道语音语调 语音练习课 2023.03.27 周一
English Learning - L2 英音地道语音语调 语音练习课 2023.03.27 周一 语音练习课 单元音 [ɔː] VS [ɒ] [i:] VS [ɪ] [u:] VS [ʊ] [æ ...
最新文章
- PEAR安装、管理及使用
- 如何判断网站设计是否优质?
- 战略配售基金成热点,它或成为入局CDR的最优选择
- 谷歌的网页排序算法(PageRank Algorithm)
- kdj超卖_KDJ指标超卖区域划分及交易含义
- mysql查询表名匹配只有字母的_MySQL按某些匹配字母查询表
- 32位linux进程线程在内存中的样子
- java实验的总结_Java实验总结——初学(上)
- Java 分支与循环
- oracle数据库改语句,Oracle 惯用的修改语句
- 【建站笔记】:在wordpress博客文章中插入代码段并高亮显示
- 小米Max详细刷成开发版开启Root超级权限的经验
- QComboBox实现下拉框check勾选
- [E::hts_idx_push] NO_COOR reads not in a single block at the end 10 -1
- 笔记本当服务器显示器怎么连接,笔记本连接显示器,详细教您笔记本怎么连接显示器...
- 博客系统-写文章之富文本编辑器editor
- 留学生活揭秘:进门易出门难 高淘汰率让人崩溃
- Web网站模板-横向滚动个人简历响应式网站模板(HTML+CSS+JavaScript)
- SpringBoot+vue仿网易云音乐网站(三)- Springboot项目以及前端vue基础搭建
- 你想了解ADSS和OPGW光缆之间的区别吗?
热门文章
- Python3绘制分形图像
- [收藏]进退两难—一个项目经理的日记{作者john.shen}与四位专家的点评
- 小米13怎么设置每年自动生日提醒?
- 股票APP UI界面设计
- oracle 死锁日志位置,高手请进,帮我分析一下日志(死锁)
- Window 通过cmd查看端口占用、相应进程、杀死进程
- Unity Inverse Kinematics(IK)的使用
- 你绝对能看懂的Kafka源代码分析-RecordAccumulator类代码分析
- 通过可视化图了解您的 Spark 应用程序
- Java面试题系列——JavaSE面试题(MySQL二)