408学习笔记-18-C-顺序表插入、删除、查询操作实战

1、命名规则

C语言中对变量与函数有两种命名规则:

1、下划线命名法

无论函数名还是变量名,每个单词都是全小写,且单词之间用下划线_连接,例如:list_insert

2、大/小驼峰命名法

函数名命名用大驼峰命名法,即:每个单词首字母大写,其余小写,且单词之间直接相连。

变量名命名用小驼峰命名法,即:除了首个单词,每个单词首字母大写,其余小写,且单词之间直接相连。


2、顺序表插入

C++语法:

c 复制代码
#include <stdio.h>

#define MaxSize 50

typedef int ElemType;

typedef struct
{

    ElemType data[MaxSize];
    //MaxSize是顺序表的最大长度,即能够存放元素个数的上限
    //ElemType,是为了让顺序表存储其他类型元素时,可以快速完成代码修改

    int length;//顺序表当前元素个数

}SqList;


bool ListInsert(SqList &list, int i, ElemType n)
{
    //判断需要插入的位置是否合法
    if(i < 1 || i > list.length + 1)
    {
        return false;
    }

    //判断顺序表是否已满
    if(list.length == MaxSize)
    {
        return false;
    }

    //插入元素操作
    //其实质就是将元素逐个往后移动,将需要插入的位置空出来,再插入元素
    for(int j = list.length; j >= i; j--)
    {
        list.data[j] = list.data[j-1];
    }
    list.data[i-1] = n;

    //更新顺序表元素个数
    list.length++;

    return true;
}


int main()
{
    SqList list;

    //初始化顺序表
    list.data[0] = 0;
    list.data[1] = 1;
    list.data[2] = 2;

    //更新顺序表元素个数
    list.length = 3;

    bool ret =  ListInsert(list, 4, 3);

    if(ret)
    {
        printf("success\n");

        for(int i = 0; i < list.length; i++)
        {
            printf("%3d", list.data[i]);
        }
    }
    else
    {
        printf("false\n");
    }


    return 0;
}

C语法:

c 复制代码
#include <stdio.h>

#define MaxSize 50

typedef int ElemType;

typedef struct
{

    ElemType data[MaxSize];
    //MaxSize是顺序表的最大长度,即能够存放元素个数的上限
    //ElemType,是为了让顺序表存储其他类型元素时,可以快速完成代码修改

    int length;//顺序表当前元素个数

}SqList;


int ListInsert(SqList *pList, int i, ElemType n)
{
    //判断需要插入的位置是否合法
    if(i < 1 || i > pList->length + 1)
    {
        return 0;
    }

    //判断顺序表是否已满
    if(pList->length == MaxSize)
    {
        return 0;
    }

    //插入元素操作
    //其实质就是将元素逐个往后移动,将需要插入的位置空出来,再插入元素
    for(int j = pList->length; j >= i; j--)
    {
        pList->data[j] = pList->data[j-1];
    }
    pList->data[i-1] = n;

    //更新顺序表元素个数
    pList->length++;

    return 1;
}


int main()
{
    SqList *pList;

    //初始化顺序表
    pList->data[0] = 0;
    pList->data[1] = 1;
    pList->data[2] = 2;

    //更新顺序表元素个数
    pList->length = 3;

    int ret =  ListInsert(pList, 4, 3);

    if(ret)
    {
        printf("success\n");

        for(int i = 0; i < pList->length; i++)
        {
            printf("%3d", pList->data[i]);
        }
    }
    else
    {
        printf("false\n");
    }


    return 0;
}

3、顺序表删除

C++语法:

c 复制代码
#include <stdio.h>

#define MaxSize 50

typedef int ElemType;

typedef struct
{

    ElemType data[MaxSize];
    //MaxSize是顺序表的最大长度,即能够存放元素个数的上限
    //ElemType,是为了让顺序表存储其他类型元素时,可以快速完成代码修改

    int length;//顺序表当前元素个数

}SqList;


bool ListDelete(SqList &list, int i, ElemType &del)
{
    //判断元素位置i是否合法
    if(i < 1 || i > list.length)
    {
        return false;
    }

    del = list.data[i];

    for(int j = i; j < list.length; j++)
    {
        list.data[j-1] = list.data[j];
    }

    //更新顺序表中的元素个数
    list.length--;

    return true;

}


int main()
{
    SqList list;

    //初始化顺序表
    list.data[0] = 0;
    list.data[1] = 1;
    list.data[2] = 2;

    //更新顺序表元素个数
    list.length = 3;

    //定义一个变量去保存被删除的元素
    ElemType del;

    bool ret =  ListDelete(list, 2, del);

    if(ret)
    {
        printf("success\n");

        for(int i = 0; i < list.length; i++)
        {
            printf("%3d", list.data[i]);
        }

        printf("\n%3d\n", del);
    }
    else
    {
        printf("false\n");
    }


    return 0;
}

4、顺序表查找

C++语法:

c 复制代码
#include <stdio.h>

#define MaxSize 50

typedef int ElemType;

typedef struct
{

    ElemType data[MaxSize];
    //MaxSize是顺序表的最大长度,即能够存放元素个数的上限
    //ElemType,是为了让顺序表存储其他类型元素时,可以快速完成代码修改

    int length;//顺序表当前元素个数

}SqList;


int LocateElement(SqList list, ElemType element)
{
    int i;
    for(i = 0; i < list.length; i++)
    {
        if(list.data[i] == element)
        {
            return i+1;
        }
    }

    return 0;
}


int main()
{
    SqList list;

    //初始化顺序表
    list.data[0] = 0;
    list.data[1] = 1;
    list.data[2] = 2;

    //更新顺序表元素个数
    list.length = 3;

    //定义一个变量去保存被删除的元素
    ElemType del;

    int ret =  LocateElement(list, 1);

    if(ret)
    {
        printf("success\n");

        printf("%d\n", ret);
    }
    else
    {
        printf("false\n");
    }


    return 0;
}
相关推荐
双叶83624 分钟前
(C语言)超市管理系统 (正式版)(指针)(数据结构)(清屏操作)(文件读写)(网页版预告)(html)(js)(json)
c语言·javascript·数据结构·html·json
请你喝好果汁64127 分钟前
Jupyter Notebook 配置学习笔记
笔记·学习·jupyter
冬日枝丫31 分钟前
【spring】spring学习系列之六:spring的启动流程(下)
java·学习·spring
ocean101032 分钟前
项目管理学习-CSPM-4考试总结
学习·程序人生
虾球xz39 分钟前
游戏引擎学习第286天:开始解耦实体行为
c++·人工智能·学习·游戏引擎
應呈44 分钟前
FreeRTOS的学习记录(任务创建,任务挂起)
java·linux·学习
序属秋秋秋1 小时前
我的创作纪念日——《惊变256天》
学习·程序人生·学习方法
关于不上作者榜就原神启动那件事2 小时前
git版本控制学习
git·学习
LuckyLay2 小时前
Vue百日学习计划Day9-15天详细计划-Gemini版
前端·vue.js·学习
持之以恒的天秤3 小时前
线程同步学习
linux·学习