Linear table & sequence table (C++ implementation code)

  • init_SeqList() initialize linear list
  • Insert_SeqList(SeqList *L,int i,datatype x) insert x to the position of linear table i
  • Delete_SeqList(SeqList *L,int i) delete the i-th element in the table (i=[1,n])
  • Loaction_SeqList(SeqList *L,datatype x) Find element x in sequence table
#define MAXSIZE 20          //定义线性表最大长度
typedef struct {
    
                //定义数据类型
    int data;
}datatype;

typedef struct{
    
    
    datatype data[MAXSIZE]; 
    int last;
}SeqList;

SeqList *init_SeqList(){
    
    //初始化线性表
    SeqList *L;
    L=(SeqList *)malloc(sizeof(SeqList));
    L->last=-1;         //线性表表长为last+1 last为数组下标
    return L;
}

int Insert_SeqList(SeqList *L,int i,datatype x){
    
    //插入x到线性表i的位置
    int j;
    if(L->last==MAXSIZE-1)      
        return -1;               
    if(i<1||i>L->last+2)    //L->last+2==n+1
        return 0;
    for(j=L->last;j>=i-1;j--){
    
    
        L->data[j+1]=L->data[j]; //插入顺序:1.先将ai~an向后移动,为新元素让出位置
    }
    L->data[i-1]=x;                 //2.将x置入空出的位置   
    L->last++;                      //3.修改last指针(相当于修改表长)
    return 1;
}

int Delete_SeqList(SeqList *L,int i){
    
    //删除表中第i个元素(i=[1,n])
    int j;
    if(i<1||i>L->last+1)            
        return 0;
    for(j=i;j<=L->last;j++){
    
            //删除顺序: 1.将ai+1~an向前移动
        L->data[j-1]=L->data[j];
    }
    L->last--;                      //2.修改last指针
    return 1;
}

int Loaction_SeqList(SeqList *L,datatype x){
    
    //顺序表查找元素
    int i=0;
    while(i<=L->last&&L->data[i].data!=x.data)
        ++i;
    if(i>L->last)
        return -1;
    return i;
}

Guess you like

Origin blog.csdn.net/qq_43477024/article/details/109605577