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;
}
相关推荐
夕除5 小时前
Redis 过期策略
redis·笔记·面试
Nuanyt6 小时前
Agent 学习笔记(下篇三):上线工程、进阶选择与操作界面(Stage 7 / 7.5 / 8 + 延伸路线)
笔记·python·学习·memory·aiagent·harness
·present·6 小时前
CSAPP(Bomb lab)
c语言·c++
叼烟扛炮7 小时前
Linux 学习笔记(四十一):TCP 并发演进——从单进程到多线程服务器
linux·运维·服务器·网络·笔记·学习·tcp/ip
叼烟扛炮8 小时前
Linux 学习笔记(四十四):HTTP 协议解析与极简 Web 服务器实战
linux·服务器·学习
叼烟扛炮8 小时前
Linux 学习笔记(四十三):网络编程进阶——自定义协议解决 TCP 粘包与守护进程
linux·开发语言·网络·笔记·tcp/ip
songyuc8 小时前
【Manskill3】TableSceneBuilder学习笔记
pytorch·笔记·学习
外收内放9 小时前
Python基础语法练习题(75)
开发语言·python·学习
゛凌乱的记忆づ10 小时前
好用的md文件编辑器——TyporaS与Typora
笔记·git·typora·markdown
kyrie_sakura11 小时前
大模型学习20 大模型学习 - LangChain3 - Agents
人工智能·学习·langchain