天勤数据结构顺序表算法操作含完整测试

大家好,我是执念斩长河。一个愿与亿万努力者结伴同行的23级408考研党。今天非常开心的运行天勤的顺序表算法操作集,特此整理在这个博文里面。博文涉及天勤书籍上的一些基本操作,主要有线性表定义、查找元素、删除元素、遍历元素、初始化元素。特别精彩!

1.数据结构算法操作集定义

大家结合书籍,如果没书可以先收藏。今天2021年10月16日适合学习。



void insertX(Sqlist &L,int x);//将x插入顺序表中
int LocateElemX(Sqlist L,int x);//查找第一个比x大的元素
int LocateElemE(Sqlist L,int e);//查找与e相等元素
int insertE(Sqlist &L,int p,int e);//插入一个元素
int listDelete(Sqlist &L,int p,int &e);//删除L中的元素
void InitList(Sqlist &L);//初始化length
int GetElem(Sqlist L,int p,int &e);//用e返回L中p位置上的元素

2.实验效果

在这里插入图片描述

3.完整代码

#include<stdio.h>
#include<stdlib.h>
#define maxSize 100
typedef struct {
    
    
    int data[maxSize];
    int length;
}Sqlist;



int LocateElemX(Sqlist L,int x)
{
    
    
    int i;
    for(i=1;i<=L.length;i++)
    {
    
    
        if(x<L.data[i])
            return i;
    }
    return i;
}

//将x插入顺序表中
void insertX(Sqlist &L,int x)
{
    
    
    int p,i;
    p = LocateElemX(L,x);
    for(i=L.length;i>=p;i--)
        L.data[i+1] = L.data[i];
    L.data[p] = x;
    L.length++;

}

//查找与e等值的元素
int LocateElemE(Sqlist L,int e)
{
    
    
    int i;
    for(i=1;i<=L.length;i++)
        if(L.data[i]==e)
            return i;
    return 0;
}

int insertE(Sqlist &L,int p,int e)
{
    
    
    int i;
    if(p<1 || p>L.length+1 || L.length == maxSize - 1)
        return 0;
    for(i=L.length;i>=p;i--)
        L.data[i+1] = L.data[i];
    L.data[p] = e;
    L.length++;
    return 1;
}

int listDelete(Sqlist &L,int p,int &e)
{
    
    
    int i;
    if(p<1 || p>L.length )
        return 0;
    e = L.data[p];
    for(i=p;i<L.length;++i)
        L.data[i] = L.data[i+1];
    --(L.length);
    return 1;
}

void InitList(Sqlist &L)
{
    
    
    L.length = 0;
}

//用e返回L中p位置上的元素
int GetElem(Sqlist L,int p,int &e)
{
    
    
    if(p < 1|| p>L.length)
        return 0;
    e = L.data[p];
    return 1;
}

int main()
{
    
    
    //创建L
    Sqlist L;
    //增加L
    InitList(L);
    insertX(L,5);
    insertX(L,7);
    //查找L中的5
    int pos = LocateElemE(L,5);
    printf("find 5:%d\n",L.data[pos]);
    //删除L中的5
    int flag = listDelete(L,1,pos);
    printf("1 is success:%d\n",flag);
    //遍历L
    for(int i=1;i<=L.length;i++)
        printf("%d ",L.data[i]);
    return 0;

}

4.总结

一开始初始化,才识学浅卡了一会,然后测试其他函数的时候,根据书上定义即可。没有特别难的难点,如果有疑问可以在下方留言。我是执念斩长河,一个愿与亿万努力者结伴同行的考研党。

おすすめ

転載: blog.csdn.net/m0_37149062/article/details/120799063