news 2026/4/4 6:05:04

顺序表的实现(2)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
顺序表的实现(2)

#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;

#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status; //Status 是函数返回值类型,其值是函数结果状态代码。
typedef int ElemType; //ElemType 为可定义的数据类型,此设为int类型
#define MAXSIZE 100 //顺序表可能达到的最大长度
typedef struct {
ElemType* elem; //存储空间的基地址
int length; //当前长度
} SqList;
Status InitList(SqList& L)
{
//构造一个空的顺序表L
L.elem = new ElemType[MAXSIZE]; //为顺序表分配一个大小为MAXSIZE的数组空间
if (!L.elem)
exit(OVERFLOW); //存储分配失败退出
L.length = 0; //空表长度为0
return OK;
}
void DestroyList(SqList& L)
{
if (L.elem)
delete[]L.elem; //释放存储空间
}
int ListLength(SqList L)
{
return L.length;
}
bool ListEmpty(SqList L)
{
if (L.length == 0)
return true;
else
return false;
}
Status GetElem(SqList L, int i, ElemType& e) //用e返回L中第i个数据元素的值
{
if (i<1 || i>L.length) //顺序表的位置在1~L.length,那么不符合条件的范围就是
//i<1||i>L.length
return ERROR;
e = L.elem[i - 1]; //数组的第i-1个位置放的就是线性表第i个位置的元素
return OK;
}
int LocateElem(SqList L, ElemType e) //返回L中第1个值与e相同的元素在L中的位置,不存在返回0
{
for (int i = 0; i < L.length; i++)
{
if (L.elem[i] == e)
return i + 1;
}
return 0;
}
Status ListInsert(SqList& L, int i, ElemType e) //在顺序表L中第i个位置插入新的元素e
{
if (i<1 || i>L.length + 1)
{
return ERROR;
}
if (L.length == MAXSIZE) {
return ERROR;
}
for (int j = L.length - 1; j >= i - 1; j--)
{
L.elem[j + 1] = L.elem[j];
}
L.elem[i - 1] = e;
L.length++;
return OK;
}
Status ListDelete(SqList& L, int i) //在顺序表L中删除第i个元素
{
if (i<1 || i>L.length)
return ERROR;
for (int j = i; j <= L.length - 1; j++)
{
L.elem[j - 1] = L.elem[j];
}
--L.length;
return OK;
}
void ListPrint(SqList L)
{
for (int i = 0; i < L.length; i++)
cout << L.elem[i] << ((i == L.length - 1) ? '\n' : ' ');
}
int main()
{
int i;
ElemType e;
SqList L;
string op;
InitList(L);
while (cin >> op) {
if (op == "Empty")
cout << (ListEmpty(L) ? "Empty" : "Not empty") << endl;
else if (op == "Insert") {
cin >> i >> e;
if (ListInsert(L, i, e) == ERROR)
cout << "Insert failed" << endl;
else
ListPrint(L);
}
else if (op == "Length") {
cout << "List length is " << ListLength(L) << endl;
}
else if (op == "GetElem") {
cin >> i;
if (GetElem(L, i, e) == ERROR)
cout << "Out of index" << endl;
else
cout << "The elem at position " << i << " is " << e << endl;
}
else if (op == "LocateElem") {
cin >> e;
i = LocateElem(L, e);
if (i == 0)
cout << e << " is not found in list" << endl;
else
cout << e << " is found at the position " << i << endl;
}
else if (op == "Delete") {
cin >> i;
if (ListDelete(L, i) == ERROR)
cout << "Delete failed" << endl;
else
ListPrint(L);
}
}
DestroyList(L);
return 0;
}

//代码来源:湖南科技大学oj题目

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/3 2:34:45

vue+uniapp+springboot微信小程序的健康体检预约系统

文章目录 摘要 主要技术与实现手段系统设计与实现的思路系统设计方法java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 摘要 该系统基于Vue.js、UniApp和Spring Boot框架开发&#xff0c;旨在为用户提供便捷的健…

作者头像 李华
网站建设 2026/3/30 9:42:29

SegmentFault思否问答:解答lora-scripts常见技术疑问

lora-scripts 技术解析&#xff1a;让个性化模型训练触手可及 在生成式 AI 的浪潮中&#xff0c;越来越多开发者希望将大模型“据为己有”——不是简单调用 API&#xff0c;而是真正拥有一个能体现个人风格、适配特定场景的专属模型。但现实是&#xff0c;全参数微调动辄需要 A…

作者头像 李华
网站建设 2026/3/31 19:51:51

screen+在STM32平台上的SPI通信实战案例

用SPI点亮第一块屏&#xff1a;STM32驱动screen实战手记你有没有过这样的经历&#xff1f;项目做到一半&#xff0c;老板突然说&#xff1a;“加个屏幕吧&#xff0c;用户要能看懂。”然后你就开始翻数据手册、查引脚定义、调试时序——一连串操作下来&#xff0c;三天过去了&a…

作者头像 李华
网站建设 2026/3/31 20:17:24

计算机毕设Java农产品供销服务系统 基于Java的农产品供应链管理系统设计与实现 Java技术驱动的农产品购销服务平台开发

计算机毕设Java农产品供销服务系统ud63j9&#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。随着互联网技术的飞速发展&#xff0c;农产品的销售模式也在不断革新。传统的农产品供销…

作者头像 李华
网站建设 2026/4/3 5:20:15

Java工程师必备:跨境支付数据加密的7个最佳实践(含代码模板)

第一章&#xff1a;Java工程师必备&#xff1a;跨境支付数据加密的核心挑战在构建跨境支付系统时&#xff0c;Java工程师面临的数据加密挑战远超常规应用场景。由于涉及多国监管政策、货币结算协议以及跨国网络传输&#xff0c;数据的机密性、完整性和可审计性成为系统设计的刚…

作者头像 李华
网站建设 2026/4/3 14:25:30

token成本太高?lora-scripts帮你用最少数据达成最优微调效果

token成本太高&#xff1f;lora-scripts帮你用最少数据达成最优微调效果 在AI模型越来越强大的今天&#xff0c;一个现实问题却让不少开发者望而却步&#xff1a;微调大模型的成本实在太高了。无论是Stable Diffusion生成特定风格图像&#xff0c;还是LLaMA类模型回答专业领域问…

作者头像 李华