数据结构学习笔记-线性表顺序存储(C语言实现)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/z498596750/article/details/79239458

写了一天,终于将线性表的顺序存储实现了,顺便恶补了一下指针内容。顺序存储,适合做查询,链式存储适合做增删。

添加方法主要就是将线性表从后往前遍历,依次往后挪一位,直到空出想要插入的位置,删除方法就是将线性表从要删除

的地方往后遍历,依次往前挪一位。

#include <stdio.h>
#include <stdlib.h>
#define MAXLENGTH 20
typedef int Eletype;
typedef struct{
    Eletype data[MAXLENGTH];
    int length;
}SqList;
void init(SqList *l){
    l->length=0;
}
void addData(SqList *l){
    l->length=5;
    for(int i=0;i<l->length;i++){
        l->data[i]=i+1;
    }
}
void addsData(SqList *l){
    l->length=5;
    for(int i=0;i<l->length;i++){
        l->data[i]=i*2;
    }
}
void getEle(SqList l,int index,Eletype *e){
    if(l.length<1){
        printf("该线性表为空\n");
        return ;
    }else{
        if(index<=l.length&&index>0){
            *e=l.data[index-1];
        }else{
            printf("所取的位置不在线性表范围内\n");
            return ;
        }
    }
}
void display(SqList l,int size){
    Eletype e;
    printf("线性表中数据为:\n");
    for(int i=1;i<=size;i++){
        getEle(l,i,&e);
        printf("%d ",e);
    }
    printf("\n");
}
void insertEle(SqList *l,int index,Eletype e){
    if(l->length<MAXLENGTH){
       if(index<=l->length&&index>0){
        for(int i=l->length-1;i>=index-1;i--){
            l->data[i+1]=l->data[i];
        }
        l->data[index-1]=e;
        l->length++;
        }else if((index-1)==l->length){
            l->data[index-1]=e;
            l->length++;
        }else{
            printf("所插入的位置不在线性表范围内\n");
            return ;
        }
    }else{
        printf("所要插入的线性表已满\n");
        return ;
    }
}
void deleteEle(SqList *l,int index,Eletype *e){
    if(l->length<1){
        printf("该线性表为空\n");
        return ;
    }else{
        if(index>l->length||index<1){
            printf("所要删除的数据不在线性表范围内\n");
        }else{
            *e=l->data[index-1];
            for(int i=index-1;i<l->length;i++){
                l->data[i]=l->data[i+1];
            }
            l->length--;
        }
    }
}
int hnh(SqList l,Eletype e){
    int result;
    for(int i=0;i<l.length;i++){
        if(e==l.data[i]){
            result=1;
            break;
        }else{
            result=0;
        }
    }
    return result;
}
void hb(SqList *a,SqList b){
    Eletype e;
    int j;
    for(int i=1;i<=b.length;i++){
        getEle(b,i,&e);
        j=hnh(*a,e);
        if(j==0){
            int q=a->length;
            q++;
            insertEle(a,q,e);
            continue;
        }else{
            continue;
        }
    }
}
int main()
{
    SqList l,s;
    Eletype e;
    init(&l);
    addData(&l);
    addsData(&s);
    display(l,5);
    display(s,5);
    hb(&l,s);
    display(l,8);
}


猜你喜欢

转载自blog.csdn.net/z498596750/article/details/79239458