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

news/2024/7/1 2:44:36
#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");	}

http://lihuaxi.xjx100.cn/news/285934.html

相关文章

一文带你看懂Springboot核心功能及优缺点

点击上方[视学算法]→右上角[...]→[设为星标⭐]SpringBoot核心功能1、独立运行Spring项目Spring boot 可以以jar包形式独立运行&#xff0c;运行一个Spring Boot项目只需要通过java -jar xx.jar来运行。2、内嵌servlet容器Spring Boot可以选择内嵌Tomcat、jetty或者Undertow,这…

最小费用最大流 ---- 2017icpc青岛现场赛 K Our Journey of Xian Ends (拆点控制原图点度 + 中间必经过的点设置成源点 + 起点设成汇点)

题目链接 题目大意&#xff1a; 题目贼恶心难读 就是你出发地是"Xian"西安&#xff0c;现在你要出发到上海然后再去青岛&#xff0c;然后回到上海 飞机场限制&#xff1a;就是每个机场只能降落和起飞一次 上海的限制&#xff1a;上海有两个机场&#xff0c;叫虹桥…

koa-grace:一个基于koa的node多应用MVC框架

春节期间没回家留在北京写了一个基于koa的node MVC框架&#xff1a;koa-grace &#xff0c;大家有兴趣可以star & fork下&#xff0c;谢谢支持啦&#xff01;&#xff01; 项目地址&#xff1a; https://github.com/xiongwilee/koa-grace 详细文档&#xff1a; 1. 简介 koa…

07-图6 旅游规划 (25分)(以此感谢zyx佬)

这个题的话算是模板题改编了一点吧&#xff0c;不过个人感觉这个改编很有助于你理解迪杰斯特拉这个算法的真谛。 题解&#xff1a;新开一个cost数组来记录花费&#xff0c;仍然是用了优先队列优化的一个思想&#xff0c;与模板题不同的是只需要加一句话&#xff08;感谢zyx佬发…

百度Apollo 3.5是如何设计Cyber RT计算框架的?

自百度Apollo自动驾驶平台开源以来&#xff0c;已快速迭代至 3.5 版本&#xff0c;代码行数超过 39 万行&#xff0c;合作伙伴超过 130 家&#xff0c;吸引了来自 97 个国家的超 15000 名开发者。无疑&#xff0c;Apollo 是目前世界范围内最活跃的自动驾驶开放平台之一。最新发…

有没有必要把机器学习算法自己实现一遍?

编辑&#xff1a;机器学习算法与自然语言处理-忆臻&#xff0c;Charlotte数据挖掘-小杜https://www.zhihu.com/question/36768514作者&#xff1a;微调https://www.zhihu.com/question/36768514/answer/376510114不少自学的朋友很容易陷入到焦虑当中&#xff0c;尤其是在学习理…

Chapter 3、Java语法基础(二)----Java基本数据类型、变量与常量 (20th,Feb)

基本数据类型 1、整数类型 整数类型用来储存整数数值&#xff0c;即没有小数部分的数值&#xff0c;可以使正数、负数&#xff0c;也可以是零。根据所占内存的大小不同&#xff0c;分为byte、short、int、long 4种类型。 Byte型 整型中所分配内存空间最少的&#xff0c;只分配1…

后缀数组 + Hash + 二分 or Hash + 二分 + 双指针 求 LCP ---- 2017icpc 青岛 J Suffix (假题!!)

题目链接 题目大意&#xff1a; 就是给你n个串每个串取一个后缀,要求把串拼起来要求字典序最小&#xff01;&#xff01; sum_length_of_n≤5e5sum\_length\_of\_n\leq 5e5sum_length_of_n≤5e5 MY Slove : 首先我们知道对于最后一个串肯定是取最小后缀的 那么我们可以把最后…