线性表的顺序存储

#include<stdio.h>
#define MAXSIZE 20
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
typedef int ElemType;
typedef  int Status;


//定义结构体
typedef struct 
{
   ElemType data[MAXSIZE];

   int Length;//结构体长度

}SqList;

//线性表初始化
Status InitList(SqList *L){
   L->Length=0;
}

Status ListEmpty(SqList L){
   if(L.Length==0){
      return TRUE;
   }else{
      return FALSE;
   }
}

//线性表清空
Status clearList(SqList *L){
   L->Length=0;
   return OK;
}

//获得线性表第i个位置元素值
Status GetElem(SqList L,int i,ElemType *e){

   if(L.Length=0||i<1||i>L.Length)return ERROR;
   
   *e=L.data[i-1];

   return OK;
}
//查找与e相同的值是否在线性表中
Status LocateElem(SqList L,ElemType e){
   
   if(L.Length==0)return ERROR;

   int i=0;
   for ( i = 0; i < L.Length; i++)
   {
      if(L.data[i]==e)
         return i+1;
   }
   return ERROR;
   
}

//插入一个元素
Status ListInsert(SqList *L,int i,ElemType e){
  
   int k;
   if(L->Length+1>=MAXSIZE)return ERROR;

   if(i>L->Length+1||i<1)return ERROR;

   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;
   L->Length++;
   return OK;
}

Status listDelete(SqList *L,int i,ElemType *e){
   
   if(L->Length==0)return ERROR;

   if(i<1||i>L->Length)return ERROR;

   *e=L->data[i-1];
   int k;
   for(k=i;k<L->Length;k++){
      L->data[k-1]=L->data[k];
   }
   L->Length--;
   return OK;
}


//返回线性表长度
Status ListLength(SqList L){

      return L.Length;

}
int main(){
   
}

搞清楚下标值跟实际值关系就不难

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值