顺序表(C语言)

顺序表的类型定义

#define MAXSIZE 100 //最大长度
typedef struct
{
 ElemType *elem; //指向数据元素的基本地址
 int length; //线性表当前长度
}SqList;

图书表的顺序存储类型定义

#define MAXSIZE 100 //最大长度
typedef struct  //图书信息定义
{
 char no [20];  //图书ISBN
 char name [50];
 char price;
}Book;
typedef struct
{
 Book *elem; //存储空间的基本地址
 int length; //图书表中当前图书个数
}SqList;//图书表的顺序存储结构类型为SqList

初始化线性表L(参数用引用)

Status InitList_Sq(SqList &L) //构造一个空的顺序表L
{
 L.elem=new ElemType[Maxsize];//为顺序表分配空间 
 if (!L.elem)exit(overflow);//存储分配失败 
 L.length=0;//空表长度为0 
 return OK;
}

初始化线性表L(参数用指针)

Status InitList_Sq(SqList *L) //构造一个空的顺序表L
{
 L->elem=new ElemType[Maxsize];//为顺序表分配空间 
 if (!L->elem)exit(overflow);//存储分配失败 
 L->length=0;//空表长度为0 
 return OK;
}

销毁线性表L

viod DestyoyList(SqList &L)
{
 if(L.elem)delete[]L.elem;//释放存储空间
}

清空线性表L

viod ClearList(SqList &L)
{
 L.length=0;//将线性表的长度为0
}

求线性表L的长度

int GetLength(SqList L)
{
 return (L.length);
}

判断线性表L是否为空

int IsEmpty(SqList L)
{
 if (L.length==0) return 1;
 else return 0;
}

取值

int GetElem(SqList ,int i,ElemType &e)
{
 if(i<||i>L.length)return error;//判断i值的合理性
 e=L.elem[i-1];//第i-1的单元存储着第i个数据
 return OK;//随机存取
}

查找

int LocateElem(SqList ,int i,ElemType &e)
{
 for(i=0;i<L.length;i++)
      if(L.elem[i]==e) return i+1;
 return 0;
}

插入

Status InitList_Sq(SqList *L,int i ,ElemType e) //构造一个空的顺序表L
{
 if(i<1||i>L.length+1) return error;//i值不合法
 if(L.length==maxsize) return error;//当前存储空间已满
 for (j=L.length-1;j>=i-1;j--)
   L.elem[j+1]=L.elem[j];//插入位置以及之后的元素后移
   L.elem[i-1]=e;//将新元素e放入第i个位置
   ++L.length;//表长增1
 return OK;
}

删除

Status DeleteList_Sq(SqList *L,int i) 
{
 if(i<1||i>L.length+1) return error;//i值不合法
 for (j=i;j=L.length-1;j++)
   L.elem[i-1]=L.elem[j];//将删除元素之后的元素前移
   --L.length;//表长减1
 return OK;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值