作业一、顺序表按元素删除

思路:参数【顺序表 删除的值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相关推荐

  1. 抖查查参数解析 【2023/03/29】

    文章目录 文章目录 文章目录 前言 网址 目标参数 参数 请求头 确认加密位置 1.堆栈反查 逻辑代码 总体逻辑 代码 完结 前言 可以关注我哟,一起学习,主页有更多练习例子 如果哪个练习我没有写清楚 ...

  2. English Learning - L2-10 英音地道语音语调 鼻辅音 [m] [n] [ŋ] 舌边音 [l] [r] 2023.03.23 周四

    English Learning - L2-10 英音地道语音语调 鼻辅音 [m] [n] [ŋ] 舌边音 [l] [r] 2023.03.23 周四 课前准备活动和回顾 鼻辅音 鼻辅音 [m] 鼻辅 ...

  3. mulesoft MCIA 破釜沉舟备考 2023.04.29.27 (易错题)

    mulesoft MCIA 破釜沉舟备考 2023.04.29.27 (易错题) 1. An insurance company has an existing API which is curren ...

  4. E.03.29 Afraid of Needles? Don’t Let It Keep You From a Covid-19 Vaccine.

    2021.03.29 文章目录 [课程导读] [英文原文] [外刊原文] [课程导读] 疫苗被寄予了战胜新冠疫情的厚望,目前,已开始在世界各地广泛接种.然而,对于"针头恐惧症"或者 ...

  5. English Learning - L2-5 英音地道语音语调 弹力双元音 [ɪə] [ʊə] [eə] 2023.03.6 周一

    English Learning - L2-5 英音地道语音语调 弹力双元音 [ɪə] [ʊə] [eə] 2023.03.6 周一 朗读节奏 元音的长度 元音发音在清辅音和浊辅音前的区别 元音发音跟 ...

  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 周一 课前热身 辅音 辅音的定义 清辅音和浊辅音的区别 ...

  7. 关于更新win11 22H2后透明任务栏失效的解决方法.2023.03.15

    关于更新win11 22H2后透明任务栏失效的解决方法2023.03.15 [ViVe Tool下载地址]{Releases · thebookisclosed/ViVe (github.com)} ...

  8. 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 ...

  9. English Learning - L2 英音地道语音语调 语音练习课 2023.03.27 周一

    English Learning - L2 英音地道语音语调 语音练习课 2023.03.27 周一 语音练习课 单元音 [ɔː] VS [ɒ] [i:] VS [ɪ] [u:] VS [ʊ] [æ ...

最新文章

  1. PEAR安装、管理及使用
  2. 如何判断网站设计是否优质?
  3. 战略配售基金成热点,它或成为入局CDR的最优选择
  4. 谷歌的网页排序算法(PageRank Algorithm)
  5. kdj超卖_KDJ指标超卖区域划分及交易含义
  6. mysql查询表名匹配只有字母的_MySQL按某些匹配字母查询表
  7. 32位linux进程线程在内存中的样子
  8. java实验的总结_Java实验总结——初学(上)
  9. Java 分支与循环
  10. oracle数据库改语句,Oracle 惯用的修改语句
  11. 【建站笔记】:在wordpress博客文章中插入代码段并高亮显示
  12. 小米Max详细刷成开发版开启Root超级权限的经验
  13. QComboBox实现下拉框check勾选
  14. [E::hts_idx_push] NO_COOR reads not in a single block at the end 10 -1
  15. 笔记本当服务器显示器怎么连接,笔记本连接显示器,详细教您笔记本怎么连接显示器...
  16. 博客系统-写文章之富文本编辑器editor
  17. 留学生活揭秘:进门易出门难 高淘汰率让人崩溃
  18. Web网站模板-横向滚动个人简历响应式网站模板(HTML+CSS+JavaScript)
  19. SpringBoot+vue仿网易云音乐网站(三)- Springboot项目以及前端vue基础搭建
  20. 你想了解ADSS和OPGW光缆之间的区别吗?

热门文章

  1. Python3绘制分形图像
  2. [收藏]进退两难—一个项目经理的日记{作者john.shen}与四位专家的点评
  3. 小米13怎么设置每年自动生日提醒?
  4. 股票APP UI界面设计
  5. oracle 死锁日志位置,高手请进,帮我分析一下日志(死锁)
  6. Window 通过cmd查看端口占用、相应进程、杀死进程
  7. Unity Inverse Kinematics(IK)的使用
  8. 你绝对能看懂的Kafka源代码分析-RecordAccumulator类代码分析
  9. 通过可视化图了解您的 Spark 应用程序
  10. Java面试题系列——JavaSE面试题(MySQL二)