#if !defined(Seqlist__CIELSI_989SE_AJIEZN_728JULC__INCLUDED_)
#define Seqlist__CIELSI_989SE_AJIEZN_728JULC__INCLUDED_
typedef int T; // 数据元素的数据类型
struct SeqList{T* data; // 数据元素的开始地址int len;  // 当前长度int max; // 线性表的最大长度
};SeqList* SL_Create(int max);
void SL_Free(SeqList* slist);
void SL_MakeEmpty(SeqList* slist);
int SL_Length(SeqList* slist);
bool SL_IsEmpty(SeqList* slist);
bool SL_IsFull(SeqList* slist);
T SL_GetAt(SeqList* slist, int i);
void SL_SetAt(SeqList* slist, int i, T x);
bool SL_InsAt(SeqList* slist, int i, T x);
T SL_DelAt(SeqList* slist, int i);int SL_FindValue(SeqList* slist, T x);
int SL_DelValue(SeqList* slist, T x);void SL_Print(SeqList* slist);#endif

#include <stdio.h>
#include <stdlib.h>
#include "Seqlist.h"
#pragma warning(disable:4996)int main()
{int max=100;SeqList* slist=SL_Create(max);int n;// printf("how many items:");scanf("%d", &n);int i;int item;// printf("the items:");for (i=0; i<n; i++){scanf("%d", &item);SL_InsAt(slist, i, item);}int idel;// printf("delete #:");scanf("%d", &idel);SL_DelAt(slist, idel);// printf("delete a value:");      int itemdel;scanf("%d", &itemdel);SL_DelValue(slist, itemdel);SL_Print(slist);SL_Free(slist);
}

#include <stdio.h>
#include <stdlib.h>
#include "Seqlist.h"SeqList* SL_Create(int maxlen)
// 创建一个顺序表
// 与SqLst_Free()配对
{SeqList* slist=(SeqList*)malloc(sizeof(SeqList));slist->data = (T*)malloc(sizeof(T)*maxlen);slist->max=maxlen;slist->len=0;return slist;
}void SL_Free(SeqList* slist)
// 释放/删除 顺序表
// 与SqLst_Create()配对
{free(slist->data);free(slist);
}void SL_MakeEmpty(SeqList* slist)
// 置为空表
{slist->len=0;
}int SL_Length(SeqList* slist)
// 获取长度
{return slist->len;
}bool SL_IsEmpty(SeqList* slist)
// 判断顺序表是否空
{return 0==slist->len;
}bool SL_IsFull(SeqList* slist)
// 判断顺序表是否满
{return slist->len==slist->max;
}T SL_GetAt(SeqList* slist, int i)
// 获取顺序表slist的第i号结点数据
// 返回第i号结点的值
{if(i<0||i>=slist->len) {printf("SL_GetAt(): location error when reading elements of the slist!\n");        SL_Free(slist);exit(0);}else return slist->data[i];
}void SL_SetAt(SeqList* slist, int i, T x)
// 设置第i号结点的值(对第i号结点的数据进行写)
{if(i<0||i>=slist->len) {printf("SL_SetAt(): location error when setting elements of the slist!\n");        SL_Free(slist);exit(0);}else slist->data[i]=x;
}bool SL_InsAt(SeqList* slist, int i, T x)
// 在顺序表的位置i插入结点x, 插入d[i]之前
// i的有效范围[0,plist->len]
{// 请在这里补充代码,完成本关任务if(SL_IsFull(slist)){return false;}for(int j=slist->len;j>=i;j--){slist->data[j]=slist->data[j-1];}slist->data[i]=x;slist->len++;return true;}T SL_DelAt(SeqList* slist, int i)
// 删除顺序表plist的第i号结点
// i的有效范围应在[0,plist->len)内,否则会产生异常或错误。
// 返回被删除的数据元素的值。
{// 请在这里补充代码,完成本关任务if(SL_IsEmpty(slist)){return false;}T item=slist->data[i];for(int j=i;j<slist->len;j++){slist->data[j]=slist->data[j+1];}slist->len--;return item;}int SL_FindValue(SeqList* slist, T x)
// 在顺序表表中查找第一个值为x的结点,返回结点的编号
// 返回值大于等于0时表示找到值为x的结点的编号,-1表示没有找到
{int i=0;while(i<slist->len && slist->data[i]!=x) i++;if (i<slist->len) return i;else return -1;
}int SL_DelValue(SeqList* slist, T x)
// 删除第一个值为x的结点,
// 存在值为x的结点则返回结点编号, 未找到返回-1
{// 请在这里补充代码,完成本关任务int index=99999;for(int i=0;i<slist->len;i++){if(slist->data[i]==x){index=i;break;}}if(index<slist->len){SL_DelAt(slist,index);}else{return -1;}}void SL_Print(SeqList* slist)
// 打印整个顺序表
{if (slist->len==0) {printf("The slist is empty.\n");        return;}//printf("The slist contains: ");for (int i=0; i<slist->len; i++) {printf("%d  ", slist->data[i]);}printf("\n");  }

第1关:实现一个顺序存储的线性表相关推荐

  1. educoder数据结构与算法 线性表 第1关:实现一个顺序存储的线性表

    任务描述 本关任务:实现 step1/Seqlist.cpp 中的SL_InsAt.SL_DelAt和SL_DelValue三个操作函数,以实现线性表中数据的插入.删除与查找等功能. 相关知识 线性表 ...

  2. 2.1实现一个顺序存储的线性表(educoder数据结构线性表实训题)

    任务描述 本关任务:实现 step1/Seqlist.cpp 中的SL_InsAt.SL_DelAt和SL_DelValue三个操作函数,以实现线性表中数据的插入.删除与查找等功能. 相关知识 线性表 ...

  3. 算法2.2 已知线性表LA和LB中的数据元素按值非递减有序排列,现要求将LA和LB归并为一个新的线性表LC,且LC中的数据元素仍按值非递减有序排列。

    数据结构(C语言版)严蔚敏 吴伟民 算法2.2 已知线性表LA和LB中的数据元素按值非递减有序排列,现要求将LA和LB归并为一个新的线性表LC,且LC中的数据元素仍按值非递减有序排列.例如,设 LA= ...

  4. 已知线性表LA和LB中的数据元素按值非递减有序排列,现要求将LA和LB归并为一个新的线性表LC,且LC中的数据元素仍按值非递减有序排列。例如,设 LA=(3,5,8,11) LB=(2,6,8,9,1

    已知线性表LA和LB中的数据元素按值非递减有序排列,现要求将LA和LB归并为一个新的线性表LC,且LC中的数据元素仍按值非递减有序排列.例如,设 LA=(3,5,8,11) LB=(2,6,8,9,1 ...

  5. 2-1-单链表顺序存储结构-线性表-第2章-《数据结构》课本源码-严蔚敏吴伟民版...

    课本源码部分 第2章  线性表 - 单链表顺序存储结构 --<数据结构>-严蔚敏.吴伟民版        ★有疑问先阅读★ 源码使用说明  链接☛☛☛ <数据结构-C语言版>( ...

  6. 1、顺序存储:线性表/栈/队列:理论+C语言实现--详细

    文章目录 Data_Structure 绪论 1.逻辑结构 1.集合结构 2. 线性结构 3.树形结构 4.图形结构 2.物理结构 1.顺序存储结构 2.链式存储结构 1 线性表的顺序存储 1.1 线 ...

  7. 用C语言编写顺序存储的线性表(含代码实现)

    一.库函数的导入和声明 #include <stdio.h> #include <stdlib.h>#define MAXSIZE 100 //线性表存储数量的最大值 #def ...

  8. C++ 线性表顺序存储结构

    随着逐渐学习,更深入的体会了C是面向过程,C++是面向对象这一说法.下面的代码用类封装了一个顺序存储的线性表,仅供参考,有错误请指教,毕竟新手. 将元素类型定义为别名,可以方便更改.对于顺序表,最基本 ...

  9. 头歌-数据结构与算法 - 线性表

    第1关:实现一个顺序存储的线性表 #include <stdio.h> #include <stdlib.h> #include "Seqlist.h" S ...

最新文章

  1. 正则严格验证身份证信息
  2. C# 虚函数和重载函数
  3. Peter R. Rizun:“比特币现金社区的目标是全球80亿人使用BCH”
  4. py2与py3的区别
  5. Linux内核分析--操作系统是如何工作的
  6. 《TOGAF 9.1IT企业架构》什么是企业IT架构
  7. 汉中计算机培训班学费是多少,汉中远程教育培训班收费多少
  8. [Kesci] 预测分析 · 客户购买预测(AUC评估要使用predict_proba)
  9. 每日优鲜小程序基础组件介绍
  10. Aruba发布业界首款服务智能边缘的云原生平台Aruba ESP
  11. 3t硬盘坏道检测需要多久_卤素检测报告需要多久更新一次
  12. pandas保存为csv格式文件
  13. vsftp服务器的主配置文件的绝对路径,vsftp(FTP)服务器配置文件超详解说配置.doc...
  14. 【思路】Gym - 101173F - Free Figurines
  15. 项目管理49个过程超详细总结(持续更新中)
  16. oneNote笔记名不同步
  17. android 360开机启动,手机360设置开机启动项
  18. 接收机PPM与SBUS
  19. lingo子模型——数学模型4.7 例1 广告投入
  20. 恒生电子发布2023金融科技趋势研究报告,探索数智金融时代技术创新

热门文章

  1. python之互斥锁
  2. 【网络协议】TCP分段与IP分片
  3. 关闭浏览器当前页面:Ctrl+W
  4. 双目视惯雷达SLAM
  5. Pytorch中的5个非常有用的张量操作
  6. 在有序数字中寻找和为k的两个数 O(n)
  7. 超全面的JavaWeb笔记day02CSSJavaScript
  8. 【SpringMVC】与权限拦截器冲突导致的Cors跨域设置失效问题
  9. reorder-list——链表、快慢指针、逆转链表、链表合并
  10. 20道常见初级Java面试题