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++版】王道数据结构代码题——线性表部分持续更新

一、顺序表

/*
 * 2.1 删除最小元素,并用最后一个元素填充
 */
void delete_min(sqlList &L, ElemType &e) {
    //顺序表为空时,输出错误信息
    if (L.length == 0) {
        cout << "error!" << endl;
        e = -1;
        return;
    }
    /*
     * min:最小值
     * min_i:最小值对应下标
     */
    int min = L.data[0];
    int min_i = 0;
    //找最小值
    for (int i = 0; i < L.length; i++) {
        if (L.data[i] <= min) {
            min = L.data[i];
            min_i = i;
        }
    }
    //返回最小值
    e = min;
    //删除最小值,最小值位置用最后一个元素填充
    L.data[min_i] = L.data[L.length - 1];
    L.length--;
}
/*
 * 2.2
 */
void list_reverse(sqlList &L) {
    if (L.length == 0)
        return;
    int *p = L.data;
    int *q = L.data + L.length - 1;
    while (p <= q) {
        swap(*p, *q);
        p++;
        q--;
    }
}
/*
 * 2.3
 */
//此问题有三种其他解法
//※※双指针法解决移除所有值为e的元素
void delete_e(sqlList &L, ElemType e)
{
    if (L.length == 0)
        return;
    int slowIndex = 0;
    for (int fastIndex = 0; fastIndex < L.length; fastIndex++)
    {
        if (e != L.data[fastIndex])
            L.data[slowIndex++] = L.data[fastIndex];
    }
    L.length = slowIndex;
}

//2.3答案写法
void List_delete2(sqlList &L, ElemType e)
{
    int k = 0;
    for(int i = 0; i < L.length; i++)
        if(e != L.data[i])
        {
            L.data[k] = L.data[i];
            k++;
        }
    L.length = k;
}

void List_delete3(sqlList &L, ElemType e)
{
    int k = 0;
    int i = 0;
    while(i < L.length)
    {
        if(e == L.data[i])
            k++;
        else
            L.data[i - k] = L.data[i];
    }
    L.length = L.length - k;
}

//2.3自创方法
//时间复杂度:O(n)
//空间复杂度:O(1)
//优点:可以将重复元素全部换到最后
void List_delete1(sqlList &L, ElemType e)
{
    int i=0;
    int j=1;
    if(0 == L.length)
        return;
    while(j < L.length)
    {
        if(e == L.data[i])
        {
            if(e == L.data[j])
                j++;
            else
            {
                swap(L.data[i],L.data[j]);
                i++;
                j = i + 1;
            }
        }
        else
        {
            i++;
            j=i+1;
        }
    }
    L.length = i;
}
/*
 * 2.4,2.5
 * 这种做法对有序表和顺序表都适用
 * 有序表的做法会更简便
 */
void delete_st(sqlList &L, ElemType s, ElemType t)
{
    int i=0;
    int j=1;
    if(0 == L.length || s > t)
        return;
    while(j < L.length)
    {
        if(L.data[i] > s && L.data[i] < t)
        {
            if(L.data[j] > s && L.data[i] < t)
                j++;
            else
            {
                swap(L.data[i],L.data[j]);
                i++;
                j = i + 1;
            }
        }
        else
        {
            i++;
            j=i+1;
        }
    }
    L.length = i;
}
/*
 * 2.6
 */
//答案做法
void List_6(sqlList &L)
{
    if(0 == L.length)
        return;
    int i, j;
    for(i = 0, j = 1; j < L.length; j++)
        if(L.data[i] != L.data[j])
            L.data[++i] = L.data[j];
    L.length = i + 1;
}

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-07-05 20:27:23  更:2021-07-05 20:28:03 
 
开发: 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/25 16:51:14-

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