源自严蔚敏老师的教材,最近学校刚上完数据结构中的线性表,敲了下基本操作,没啥好说的,直接上代码,
注:这是我随手敲的,可能存在一些问题,仅供参考,仅供参考,仅供参考!!!

#include <iostream>
using namespace std;
#define LIST_INIT_SIZE 100//线性表存储空间的初始分配量
#define LISTINCREMENT 10//线性表初始存储空间的分配增量
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
typedef int Status;
typedef int  ElemType; typedef struct
{ElemType *elem;int length;int listsize;
}SqList;
Status InitList_Sq(SqList &L);//初始化线性表
Status DestroyList(SqList &L);//销毁线性表
Status ClearList(SqList &L);//清空线性表
Status ListEmpty(SqList L);//判断线性表是否为空
Status ListLength(SqList L);//返回线性表中的元素个数
Status GetElem(SqList L, int i, ElemType &e);//用e返回L中第i个元素
Status LocateElem(SqList L, ElemType e, Status(*compare)(ElemType, ElemType));在线性表中寻找元素并返回元素位置
Status PriorElem(SqList L, ElemType cur_e, ElemType &pre_e);//寻找元素cur_e的前驱元素
Status NextElem(SqList L, ElemType cur_e, ElemType &next_e);//寻找元素cur_e的后继元素
Status ListInsert(SqList &L, int i, ElemType e);//在线性表第i个位置插入元素e
Status ListDelete(SqList &L, int i, ElemType e);//删除线性表第i个位置的元素,其值用e带出
int main()
{return 0;
}
Status InitList_Sq(SqList &L)
{L.elem = (ElemType *)malloc(LIST_INIT_SIZE*sizeof(int));if (!L.elem){exit(OVERFLOW);}L.length = 0;L.listsize = LIST_INIT_SIZE;return OK;
}
Status DestroyList(SqList &L)
{free(L.elem);L.elem = NULL;L.length = 0;L.listsize = 0;return OK;
}
Status ClearList(SqList &L)
{L.length = 0;return OK;
}
Status ListEmpty(SqList L)
{if(L.length == 0){return TRUE;}return FALSE;
}
Status ListLength(SqList L)
{return L.length;
}
Status GetElem(SqList L, int i, ElemType &e)
{if (i<0 || i>L.length){return ERROR;}else{return e = L.elem[i-1];}
}
Status PriorElem(SqList L, ElemType cur_e, ElemType &pre_e)
{if (L.elem[0] == cur_e){return ERROR;}for (int i = 1; i < L.length; i++){if (L.elem[i] == cur_e){pre_e = L.elem[i - 1];return OK;}}return ERROR;
}
Status NextElem(SqList L, ElemType cur_e, ElemType &next_e)
{if (L.elem[L.length - 1] == cur_e){return ERROR;}for (int i = 0; i < L.length - 1; i++){if (L.elem[i] == cur_e){next_e = L.elem[i + 1];return OK;}}return ERROR;
}
Status ListInsert(SqList &L, int i, ElemType e)
{if (i<0 || i>L.length){return ERROR;}if (L.length >= L.listsize){ElemType* newbase = (ElemType*)malloc((L.listsize + LISTINCREMENT)*sizeof(ElemType));if (!newbase){exit (OVERFLOW);}L.elem = newbase;L.listsize += LISTINCREMENT;}L.length++;for (int j = L.length - 1; j >= i - 1; j--){L.elem[j + 1] = L.elem[j];}L.elem[i] = e;return OK;
}
Status ListDelete(SqList &L, int i, ElemType &e)
{if (i<0 || i>L.length){return ERROR;}e = L.elem[i - 1];for (int j = i ; j < L.length; j++){L.elem[j - 1] = L.elem[j];}L.length--;return OK;}

严蔚敏数据结构之线性表的基本操作相关推荐

  1. 数据结构 严蔚敏 第二章 线性表

    数据结构 严蔚敏 第二章 线性表 线性表:由n个(n>=0)数据特征相同的元素构成的有限序列. 线性表的类型定义表示和实现 顺序表 存储单元地址连续 随机存取 若每个元素占用 m 个存储单元,以 ...

  2. C++数据结构实验---线性表的基本操作

    实验一 线性表的基本操作 1.实验内容与要求 理解线性表的概念 设计一个线性表,分别用顺序存储结构和链式存储结构实现,完成线性表的构造.查找.插入.删除.输出等基本操作. 掌握两种存储结构的优缺点以及 ...

  3. 数据结构(严蔚敏)------双链循环线性表

    精辟::在进行链表的插入和删除操作过程中,将前置指针.结点.后置指针三个部分看作一个整体,当进行指向操作时,指针指向的是整个结构体,而不是指向其中的前置或是后置. 欧耶,总算不再迷糊啦,O(∩_∩)O ...

  4. 严蔚敏数据结构C语言版——线性表的链式存储方式详细代码

    一.严蔚敏数据结构C语言版 由于书上的许多地方都是伪代码,所以下面的代码对课本上的做了一些改动,使代码能够正常运行 链表的定义即相关类型定义 typedef int ElementType; type ...

  5. 数据结构之线性表----一文看懂顺序表、单链表、双链表、循环链表

    ​ 线性表是数据结构中比较基础的内容,不过也是入门的所需要客服的第一个难关.因为从这里开始,就需要我们动手编程,这就对很多同学的动手能力提出了挑战.不过这些都是我们需要克服的阵痛,学习新的知识总是痛苦 ...

  6. 数据结构 基于线性表的图书信息管理

    数据结构 基于线性表的图书信息管理 实验前的准备 IDE的选择 C语言中指针与结构体 实验目的 实验内容 1.基于顺序存储结构的图书信息表的创建和输出 代码 实验中遇到的问题 ① 实验中遇到的问题 ② ...

  7. 2021-10-16【严蔚敏数据结构代码实现合集】【c语言学习必备】

    本文记录了我为期三个月<算法与数据结构>的学习历程,仅作为记录自己学习状态的文章. 线性表 2021-9-14[数据结构/严蔚敏][顺序表][代码实现算法2.1-2.7] 2021-9-1 ...

  8. 【2022---计算机考研】数据结构之线性表总结(超详细适合背诵)

    文章目录 一.顺序表 (一).数据类型定义 (二).插入操作 (三).删除操作 (四).按值查找 二.单链表 (一).数据类型定义: (二).建立单链表 1.头插法建立不带头结点的单链表 2.头插法建 ...

  9. 判断数组中某个元素除自身外是否和其他数据不同_算法工程师要懂的3种算法数据结构:线性表详解...

    算法思想有很多,业界公认的常用算法思想有8种,分别是枚举.递推.递归.分治.贪心.试探法.动态迭代和模拟.当然8种只是一个大概的划分,是一个"仁者见仁.智者见智"的问题. 其实这些 ...

  10. 实验一线性表的基本操作实现及其应用(JavaScript实现)

    实验一线性表的基本操作实现及其应用(JavaScript实现) 实验目的 熟练掌握线性表的结构特点, 掌握顺序表的基本操作. 巩固 C++相关的程序设计方法与技术. 学会使用顺序表解决实际问题. 实验 ...

最新文章

  1. 网站计数器 php,网站计数器 php
  2. 8.2 Query 语句优化基本思路和原则
  3. csdn设置图片居中和尺寸
  4. Burpsuite中protobuf数据流的解析
  5. 数据结构经典案例_计算机领域必读的经典书籍清单
  6. var conf=confirm(确定要删除吗?);_微信查看谁删除了4种方法
  7. Office 365 Licence使用情况统计
  8. java tt-7s-d_JAVA TT-7S-D 超轻7速折叠自行车质量_参数_评价
  9. ubuntu实时监测显卡进程的方法
  10. SSM+基于Vue框架的在线投票系统的设计与实现 毕业设计-附源码
  11. 南京邮电大学操作系统实验五:Windows平台多进程共享内存通信
  12. win10企业版永久激活方法
  13. 读《重构:改善既有代码的设计》的思考
  14. 宽度优先搜索python_宽的解释|宽的意思|汉典“宽”字的基本解释
  15. Coreseek算法分析
  16. 【日常考试】中山市2016年小学生信息学竞赛试(shui)题
  17. 想快速给文件夹重命名就这样做
  18. java可以操作扫描仪吗_在Java中操作扫描仪(使用JNI)
  19. NYOJ118 修路方案 次小生成树
  20. CAD6:1.如何选择对象(批量选择、反选、筛选、栏选、)、2.删除工具的使用、3.如何显示图形

热门文章

  1. linux下批量查找UTF-8的BOM文件,并去除BOM
  2. Intellij IDEA创建包(package)问题解决方案
  3. Gradle与Makefile构建工具的对比
  4. PHP函数: set_time_limit
  5. PIX、ASA防火墙清除配置
  6. ISA2006的部署和无人职守
  7. Elastic search相关
  8. Spring Boot@Component注解下的类无法@Autowired的问题
  9. myeclipse 创建 maven项目的时候出现:invalid project description 解决方法
  10. Java 递归求后一个数是前两个数之和