#include<cstdio>
#define MAXSIZE 20 typedef int Elemtype; //Elemtype类型根据实际情况而定,这里取int
typedef struct
{
int data[MAXSIZE];
int length;
}Sqlist; //线性表的顺序储存结构 //线性表的抽象数据类型
Sqlist InitList(Sqlist* L) //初始化建立一个空表
{
Sqlist list;
L->length = 0;
list.length = L->length;
for(int i=0;i<MAXSIZE;++i)
list.data[i] = 0;
return list;
} bool ListEmpty(Sqlist* L){ //若线性表为空返回true不然返回false
if(L->length==0) return true;
return false; } bool ClearList(Sqlist *L) //清空线性表
{
for(int i=0;i<MAXSIZE;++i)
L->data[i] = 0;
return true;
} bool GetElem(Sqlist L,int i,Elemtype* e) //将线性表的第i个位置元素返回给e,若不存在返回false
{
if(L.length==0 || i<1 || i>L.length)
return false;
*e = L.data[i-1]; //因为return返回状态,故这里用指针实现
return true;
} int LocateElem(Sqlist* L,Elemtype e) //在线性表L中查找与给定值e相等的元素,若查找成功,返回该元素在表中的标号表示成功;否则返回0表示失败
{
for(int i=0;i<L->length;++i)
{
if(L->data[i] == e) return i;
}
return false;
} bool ListInsert(Sqlist* L,int i,Elemtype e) //在线性表L中的第i个位置插入新元素e
{
int k;
if(L->length == MAXSIZE)
return false;
if(i<1 || i>L->length)
return false;
if(i<=L->length)
{
for(k=L->length-1;k>=i-1;k--) //将要插入位置之后的数据依次后移
L->data[k+1] = L->data[k];
}
L->data[i-1] = e; //插入元素e
L->length++; //长度+1
return true;
} bool ListDelete(Sqlist* L,int i,Elemtype* e) //删除线性表L中的第i个位置元素,并用e返回其值
{
int k;
if(L->length == 0)
return false;
if(i<1 || i>L->length)
return false;
*e = L->data[i-1];
if(i<L->length) //删除位置后继元素前移
{
for(k=i;k<L->length;k++)
L->data[k-1] = L->data[k];
}
L->length--;
return true;
} int ListLength(Sqlist *L) //返回线性表L的元素个数
{
int k=0;
for(int i=0;i<MAXSIZE;++i)
{
if(L->data[i] != 0) ++k;
}
L->length = k;
return k;
} }

线性表的顺序结构及基本操作

虽然很简单,但是因为我菜,还是弄了蛮久

遇到的两个问题:

Elemtype* e = NULL;
//之后函数里给e赋值,就崩了,原来空指针是不能进行赋值操作的
//改为:
Elemtype a;
Elemtype* e = a;
//ok了

还有一个问题待解决:

我这里计算线性表长度的时候是计算了非0元素的个数,初始化时把线性表元素默认初始化为0了,不知道有没有什么好的解决方法,但是链式储存应该就不会有此类问题了(明天再玩)


就酱

最新文章

  1. Nginx实现多域名证书HTTPS
  2. ubuntu 上安装字体
  3. DFD
  4. 批处理学习:for语句详解【经典】
  5. Sql Server2005恢复备份数据库问题-Error:3154 3219
  6. Web分布式部署,跨应用程序Forms身份验证的集成方案
  7. hadoop家族之mahout安装
  8. MFC对话框中解决回车键、ESC键退出的方法
  9. APP案例分析
  10. [LeetCode] Design In-Memory File System 设计内存文件系统
  11. 在lnmp环境下,将原来的PHP7.0升级到PHP7.2
  12. C#4.5-4.7学习总结
  13. TCP输出和UDP输出
  14. 在Centos 6.5 X64下切割m3u8
  15. Java冒泡具体的原理,以及下标的变化
  16. SqlServer 凭据
  17. 某C电面记
  18. intel-FPGA的片内存储器问题
  19. mysql主从同步碰到的问题
  20. Agc017_D Game on Tree

热门文章

  1. 最小生成树 状压+prim hdu2489
  2. 一个茴字有三种写法——吐槽C#9.0的Records
  3. Cube-UI组件中create-api 模块的基本使用
  4. Ajax长轮询(LongPoll)
  5. 第11章 支撑向量机SVM
  6. eatwhatApp开发实战(五)
  7. 【转】B树、B+树、B*树、R 树、QuadTree
  8. DDD之1微服务设计为什么选择DDD
  9. 【极客思考】计算机网络:Wireshark抓包分析TCP中的三次握手与四次挥手
  10. ES6-for...of与for...in