基本入门的顺序表插入,删除,获取

面试的打击蛮大的,最基本的数据结构和算法都不会,哎!下定决心好好学习一哈这门课程


#include 
   
   
    
    
#define  ERROR 0
#define OK  1
#define MAX_SIZE 25
typedef  int ElemType;
typedef struct List{
    ElemType data[MAX_SIZE];
    //当前线性表的最大长度
    int length;
}SqList;
using namespace std;
//根据位置获取元素
int  getElement(SqList *L,int i,int &e)
{
    if (NULL == L || i<0 || i >L->length) {
        cout<<"[getElement]____输入不合法,如:空表,数组下标越界"<
    
    
     
     data[i-1];
    return OK;
}
//根据指定的位置插入一个元素
int insertElement(SqList *L,int i,int e)
{
    if (NULL == L || i<0 || i >L->length || L->length == MAX_SIZE) {
        cout<<"[insertElement]____输入不合法,如:空表,数组下标越界,线性表已经满了"<
     
     
      
      length;j!=i-1;--j) {
        //前面的依次赋值给后面的
        L->data[j]=L->data[j-1];
    }
    L->data[i-1]=e;
    //不要忘记给length的长度加1
    L->length++;
    return OK;
}
//删除输入的某一个元素,可能存在重复的元素
void deleElement(SqList *L,int e)
{
    int i=-1;
    //注意这里如果写成i++可能就会导致错误,
  
    while (++i
      
      
       
       length)
    {
          //临界条件注意:i++先判断,在循环里面会导致数组下标越界
        //这里终止条件为L->data[i+1],不存储在L->data[length]这个元素
        if (e == L->data[i])
        { 
            //找到当前的下标,并赋值
            int j=i;
            while (j < L->length -1)
            {
                //后面的依次赋值给前面的
                L->data[j]=L->data[j+1];
                ++j;
            }
             L->length--;
        }
       
    }

}
//判断数组中的元素的个数
int getLength(SqList *L )
{
    return  L->length;

}
int main(int argc, const char * argv[])
{
    SqList *L=(SqList *)malloc(sizeof(SqList)*MAX_SIZE);
    if (NULL == L) {
        cout<<"分配内存空间失败"<
       
       
         data[i]=i; L->length++; } int e; if(OK == getElement(L,24,e)) cout<<"在第24个位置上的元素是:"< 
        
          < 
         
           length) { cout< 
          
            data[j]<<","; } cout<<"\n数组中的长度为:"< 
            
           
          
         
       
      
      
     
     
    
    
   
   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值