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;
}
相关推荐
rui锐rui9 分钟前
大数据学习6:Sqoop数据迁移工具
大数据·学习·sqoop
psybrain17 分钟前
脑科学圈| 利用眼动追踪评估演讲情境下焦虑障碍儿童的注视行为
学习·心理学·脑科学·课堂·焦虑·儿童青少年·眼动
爱学习的小邓同学19 分钟前
数据结构 --- 队列
c语言·数据结构
笑衬人心。42 分钟前
Java 17 新特性笔记
java·开发语言·笔记
序属秋秋秋2 小时前
《C++初阶之内存管理》【内存分布 + operator new/delete + 定位new】
开发语言·c++·笔记·学习
许白掰2 小时前
Linux入门篇学习——Linux 工具之 make 工具和 makefile 文件
linux·运维·服务器·前端·学习·编辑器
B1nna3 小时前
Docker学习
学习·docker·容器
quant_19864 小时前
R语言如何接入实时行情接口
开发语言·经验分享·笔记·python·websocket·金融·r语言
啟明起鸣7 小时前
【网络编程】简易的 p2p 模型,实现两台虚拟机之间的简单点对点通信,并以小见大观察 TCP 协议的具体运行
c语言·网络·tcp/ip·p2p
promising-w9 小时前
【运算放大器专题】基础篇
嵌入式硬件·学习