数据结构 —— 线性表的顺序实现(顺序表)(C++)
1.数据结构 —— 绪论
2.数据结构 —— 线性表的顺序实现(顺序表)(C++)
本文相关知识:以顺序存储结构来实现线性表(C++)
如有错误请指正~~谢谢~
定义
首先,为了增强程序的可读性,做出以下定义:
#define TURE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
#define MAXSIZE 100 //表的最大长度
typedef int Status; //函数返回值的类型
typedef char ElemType; //元素的类型
这里用动态数组
的方式来实现动态内存分配
typedef struct
{
ElemType *elem;
int length; //表长
}SqList;
SqList L;//定义一个表L
初始化
Status InitList(SqList &L)
{
L.elem=new ElemType[MAXSIZE];//为顺序表分配空间
//获取此数组的基地址赋值给指针elem
if(!L.elem)
return OVERFLOW;//内存分配失败,异常处理
L.length=0;//空表长度为0
return OK;
}
一点说明:顺序表示意图如下,帮助理解后续操作
补充:数组与指针的关系
int a[5]={1,2,3,4,5};
int *p=a;
则p[3]=a[3],就代表数组的第四个元素4
销毁
void DestroyList(SqList &L)
{
if(L.elem)
delete L.elem;//释放存储空间
}
清空
void ClearList(SqList &L)
{
L.length=0;//顺序表还在,只是没有元素了
}
求表长
Status GetLenth(SqList L)
{
return L.length;
}
判空
Status IsEmpty(SqList L)
{
if(L.length==0)
return TRUE;
else
return FALSE;
}
取值
//根据位置i获取相应位置的数据元素的内容
Status GetElem(SqList L,int i,ElemType &e)
{
if(i<1||i>L.length)
return ERROR;//取值位置不合法
e=L.elem[i-1];
return OK;
}
查找
//查找与指定值e相同的数据元素的位置
Status LocateElem(SqList L,ElemType e)
{
int i;
for(i=0;i<L.length;i++)
{
if(L.elem[i]==e)
return i+1;//查找成功,返回元素序号
}
return ERROR;
}
插入
//在指定位置插入元素
Status ListInsert(SqList &L,int i,ElemType 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)
{
if(i<1||i>L.length+1)
return ERROR;
for(int j=i;j<=L.length-1;j++)
L.elem[j-1]=L.elem[j];//删除点以后的元素都向前移
L.length--;
return OK;
}
完结撒花~ ending~ 谢谢浏览~~
欢迎浏览一枚计算机小白的学习总结库,如有错误,敬请批评指正,谢谢大家!希望我们能共同进步!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)