2.1线性表的定义和基本操作

线性表的定义和基本操作

线性表

  • 定义:“逻辑结构”---线性结构

  • 基本操作:“运算”

顺序表的基本操作

  • 初始化表

#include <stdio.h>
#define MaxSize 10   //定义最大长度
typedef struct{
    int data[MaxSize];  //用静态的“数组”存放数据元素
    int length;        //顺序表的当前长度
}SqList;                //顺序表的类型定义

//初始化一个顺序表
void InitList(SqList *L){
    for(int i=0;i<MaxSize;i++)
        L->data[i]=0;
    L->length=0;
}

int main(){
    SqList L;        //声明一个顺序表
    InitList(&L);    //初始化顺序表
    return 0;
}
  • 销毁表

    void ListDrop(SqeList *L){
        L->Null;
        free(L);
        return 0;
    }
  • 插入操作

    void ListInsert(SqList *L,int i,int e){
        if(i<1||i>L->length+1)
            return false;
        if(L->length>=MaxSize)
            return false;
        for(int j=L->length;j>=i;j--)
            L->data[j]=L->data[j-1];
        L->data[i-1]=e;
        L->length++;
        return true;
    }
  • 删除操作

    bool ListDelete(SqList *L,int i,int *e){
        if(i<1||i>L->length)
            return false;
        e=L->data[i-1];        
        for(int j=i;j<L->length;j++)
            L->data[j-1]=L->data[j];
        L->length--;
        return true;
    }
  • 按值查找

    int LocateElem(SqList *L,int e){
        for(int i=0;i<L->length;i++)
            if(L->data[i]==e)
                return i+1;
        return 0;
    }
  • 按位查找

    ElemType GetElem(SeqList *L,int i){
        return L->data[i-1];
    }
  • 其他常用操作(求表长、输出操作、判空操作)

posted @ 2022-03-07 21:14  wonder-boy  阅读(126)  评论(0)    收藏  举报