IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言线性表插入删除操作 -> 正文阅读

[C++知识库]C语言线性表插入删除操作

#include <stdio.h>
#include <stdlib.h>

#define MAXSIZE 20
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0

/*
线性表起始长度从1开始,本质是封装一个数组

*/

typedef  int Status; // typedef 关键字来定义自己习惯的数据类型名称,来替代系统默认的基本类型名称、数组类型名称、指针类型名称与用户自定义的结构型名称、共用型名称、枚举型名称等。
typedef  int ElemType;



typedef  struct
{

    ElemType data[MAXSIZE];
    int length; //线性表长度

} SqList;


//获取元素方法O(1)
Status GetElem(SqList *L,int i,ElemType e)
{

    if(L->length==0||i<1||i>L->length) //越界
    {
        return ERROR;
    }

    e=L->data[i-1];
    return e;
}

//线性表插入元素O(n)
Status  ListInsert(SqList *L,int i,ElemType e)
{


    int k;

    if(L->length==MAXSIZE)//线性表满了
    {
        return ERROR;
    }
    if(i<1||i>L->length+1)//插入位置越界,可以在最后面插入,所以为len+1
    {
        return ERROR;
    }

    if(i<=L->length)
    {
        for(k=L->length-1; k>=i-1; k--) //注意要从数组实际位置差,线性表1~n 数组0~n-1
        {
            L->data[k+1]=L->data[k];//每个位置右移动一位
        }
    }
    L->data[i-1]=e;//插入
    L->length++;//不要忘记长度++


    return OK;
}

//删除元素O(n)
Status  ListDelete(SqList *L,int i,ElemType e)
{
    int k;
    if(L->length==0) //没有元素
    {
        return ERROR;
    }

    if(i<1||i>L->length)//越界
    {
        return ERROR;
    }

    e=L->data[i-1];//返回元素

    if(i<L->length)
    {
        for(k=i; k<L->length; k++)
        {
            L->data[k-1]=L->data[k];//左移动一位
        }
    }

    L->length--;


    return e;

}

//打印链表
Status  PrintList(SqList *L)
{
    for(int i=0;i<L->length;i++)
    {
        printf("%d ",L->data[i]);
    }
    printf("%\n");
    return OK;
}

int main()
{

    SqList l;
    l.length=0;
    for(int i=0;i<5;i++) //1 2 3 4 5
    {
        l.data[i]=i+1;
        l.length++;
    }

    PrintList(&l);

    ListInsert(&l,2,-99); //1 -99 2 3 4 5

    PrintList(&l);

    int k;
    k=GetElem(&l,2,k);
    printf("获取第i个位置元素%d\n",k);//-99

    k=ListDelete(&l,2,k);
    printf("删除第i个位置元素%d\n",k);//-99
    PrintList(&l);//1 2 3 4 5



    return 0;
}

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-04-22 18:17:37  更:2022-04-22 18:22:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 22:42:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码